私は複雑なdplyr
構造体を関数呼び出し内に持っています。入力は、s
と呼ばれる追加の列を持つことができるデータフレームです。この列が利用可能な場合は、標準列にこの列を追加してグループ化します。 現時点では、if
ステートメントで列がデータフレーム内にあるかどうかを確認し、グループ化を異なる方法で解決しました。グループ分け後、私は両方の種類のデータに対して同じコードを持っています。列がないdplyrのグループ化
これを行うより洗練された方法がありますか?私の元の関数では、私はsummarise
関数で計算するいくつかの変数があり、私は別々に両方の部分を維持したくありません。
ここは例です。
library(dplyr)
df1 <- data.frame(s=rep(c('a','b'), each=10),
p=rep(letters[1:5], 4),
v=runif(20))
df2 <- data.frame(p=rep(letters[1:5], each=4),
v=runif(20))
avgP <- function(df) {
if('s' %in% names(df)) {
df %>%
group_by(s, p) %>%
summarise(avg=mean(v))
} else {
df %>%
group_by(p) %>%
summarise(avg=mean(v))
}
}
avgP(df1)
avgP(df2)
私の推奨されるソリューションは、私がdf2
上で作業するときgroup_by
はちょうどのみp
で不足している列とするグループを無視しているようなものになるだろう。
を使用することができますが、各データセット内の同じ変数はありますか? (もちろん「s」とは別に)?たぶんSEを使用する – Sotos
SEの意味は?はい、基本的に同じです。 – drmariod
[このリンクをご覧ください](https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html)。また、@ akrunの答えはSE – Sotos