探索的データ分析のためにR shinyで作業しています。 2つのチェックボックス入力があり、1つのチェックボックスにはすべてのカテゴリ変数が設定され、他のすべてには数値変数が設定されています。次に、この2つの選択にgroupbyを次のように適用します。
var1 <- input$variable1 # Checkbox with categorical variables
var2 <- input$variable2 # Checkbox with numerical variables
v$data <- dataset %>%
group_by_(var1) %>%
summarize_(Sum = interp(~sum(x), x = as.name(var2))) %>%
arrange(desc(Sum))
Groupbyが1列のみの場合は完全に機能しますが、複数の列でgroupbyを使用します。ユーザーが複数のカテゴリ変数を選択すると、列名の配列が返されます。 dplyr groupbyでこれを渡す方法。
変数名のベクトルがある場合は、.dots=
のgroup_by_
パラメーターに渡す必要があります。例えば:
mtcars %>%
group_by_(.dots=c("mpg","hp","wt")) %>%
summarize(x=mean(gear))
rlang
を作成したのと同じチームによって作成されたdplyr
パッケージを使用できます。
具体的には、syms
関数と!!!
関数は次のようになります。
library(dplyr)
library(rlang)
group_cols <- c("vs", "am")
mtcars %>%
group_by(!!!syms(group_cols)) %>%
summarize(mean_wt = mean(wt))
この 密接に関連した質問と回答 は!!
演算子とsym
関数は、単一の列名(つまり、長さ1の文字ベクトル)に使用されます。
dplyr
パッケージの最新バージョンには、_group_by
_や_group_by_if
_などの_group_by_at
_のバリアントが含まれています。これらを使用して、select
関数に似た構文で列の選択を実行できます。
select(my_data, one_of(group_cols))
を使用して列のリストを選択できるように、_group_by_at
_を使用して以下を実行できます。
_library(dplyr)
group_cols <- c("vs", "am")
mtcars %>%
group_by_at(.vars = vars(one_of(group_cols))) %>%
summarize(mean_wt = mean(wt))
_