Tôi đang viết một hàm mà người dùng được yêu cầu xác định một hoặc nhiều biến nhóm trong lệnh gọi hàm. Dữ liệu sau đó được nhóm lại bằng cách sử dụng dplyr và nó hoạt động như mong đợi nếu chỉ có một biến nhóm, nhưng tôi đã không tìm ra cách thực hiện nó với nhiều biến nhóm.dplyr :: group_by_ với đầu vào chuỗi ký tự của một số tên biến
Ví dụ:
x <- c("cyl")
y <- c("cyl", "gear")
dots <- list(~cyl, ~gear)
library(dplyr)
library(lazyeval)
mtcars %>% group_by_(x) # groups by cyl
mtcars %>% group_by_(y) # groups only by cyl (not gear)
mtcars %>% group_by_(.dots = dots) # groups by cyl and gear, this is what I want.
tôi đã cố gắng để biến y
vào giống như dots
sử dụng:
mtcars %>% group_by_(.dots = interp(~var, var = list(y)))
#Error: is.call(expr) || is.name(expr) || is.atomic(expr) is not TRUE
Làm thế nào để sử dụng một chuỗi đầu vào người dùng xác định> 1 tên biến (như y
trong ví dụ) để nhóm dữ liệu bằng cách sử dụng dplyr?
(Câu hỏi này được bằng cách nào đó liên quan đến this one nhưng không trả lời ở đây.)
Đây là lý do tại sao bạn nên bắt đầu sử dụng 'data.table' :)' as.data.table (mtcars) [, sum (carb), y] 'j/k. Câu hỏi hay. –
Tôi có thể, một số ngày :) Nhưng bây giờ tôi sẽ gắn bó với dplyr .. –