列インデックスをdplyr::summarize_at
に指定すると、グループ化列を除いて集計対象の列が決定されることに気付きました。この設計では、正しい列インデックスを使用することは、集計列がグループ化列の前後に配置されているかどうかによって異なります。要約列がグループ化し、グループ化列の位置に応じて変化する方法列インデックス付きのdplyr summarise_atの使用
library(dplyr)
data("mtcars")
# grouping column after summarise columns
mtcars %>% group_by(gear) %>% summarise_at(3:4, mean)
## A tibble: 3 x 3
# gear disp hp
# <dbl> <dbl> <dbl>
#1 3 326.3000 176.1333
#2 4 123.0167 89.5000
#3 5 202.4800 195.6000
# grouping columns before summarise columns
mtcars %>% group_by(cyl) %>% summarise_at(3:4, mean)
## A tibble: 3 x 3
# cyl hp drat
# <dbl> <dbl> <dbl>
#1 4 82.63636 4.070909
#2 6 122.28571 3.585714
#3 8 209.21429 3.229286
# no grouping columns
mtcars %>% summarise_at(3:4, mean)
# disp hp
#1 230.7219 146.6875
# actual third & fourth columns
names(mtcars)[3:4]
#[1] "disp" "hp"
packageVersion("dplyr")
#[1] ‘0.7.2’
お知らせ:
は、ここでの例です。
これは他のプラットフォームでも同じですか?バグか機能ですか?
は、意図しているようです。 'mean'がそのセットに適用されます。 – lukeA
@lukeA、それを確認していただきありがとうございます!私は、インデックスを特定し、それらの前にグループ化する列の数を減算する必要がある場合は、私にはかなり直感的だと感じなければならないと言わなければなりません。 –
'3:4'の代わりに、' vars(disp:hp) 'のようなことをする方が安全です。例えば、 'mtcars%>%group_by(cyl)%>%summarise_at(vars(disp:hp)、mean)' – MrFlick