Tôi đang cố gắng chuyển sự hiểu biết của tôi về plyr vào dplyr, nhưng tôi không thể tìm ra cách nhóm theo nhiều cột.
# make data with weird column names that can't be hard coded
data = data.frame(
asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE),
a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE),
value = rnorm(100)
)
# get the columns we want to average within
columns = names(data)[-3]
# plyr - works
ddply(data, columns, summarize, value=mean(value))
# dplyr - raises error
data %.%
group_by(columns) %.%
summarise(Value = mean(value))
#> Error in eval(expr, envir, enclos) : index out of bounds
Tôi còn thiếu gì để dịch ví dụ plyr thành cú pháp dplyr-esque?
Chỉnh sửa 2017 : Dplyr đã được cập nhật, do đó, một giải pháp đơn giản hơn đã có sẵn. Xem câu trả lời hiện đang được chọn.
.dots. Đây là giải pháp được điều chỉnh từ câu trả lời của @hadley bên dưới:df %>% group_by_(.dots=list(quote(asihckhdoydk), quote(a30mvxigxkgh))) %>% summarise(n = n())
group_by_Bây giờ bạn có thể sử dụng giải thích trongvignette("nse")