【发布时间】:2015-09-01 12:21:48
【问题描述】:
我有一个数据框:
md <- data.frame(a = c(3,5,4,5,3,5), b = c(5,5,5,4,4,1), c = c(1,3,4,3,5,5),
device = c(1,1,2,2,3,3))
myvars = c("a", "b", "c")
md[2,3] <- NA
md[4,1] <- NA
md
我想按设备计算每列中 5 的数量。我可以这样做:
library(dplyr)
group_by(md, device) %>%
summarise(counts.a = sum(a==5, na.rm = T),
counts.b = sum(b==5, na.rm = T),
counts.c = sum(c==5, na.rm = T))
但是,在现实生活中,我会有大量变量(myvars 的长度可能非常大) - 所以我无法手动指定这些 counts.a、counts.b 等 - 几十个次。
dplyr 是否允许一次在所有 myvars 列上运行 5 秒计数?
谢谢!
【问题讨论】:
-
见
?summarise_each和stackoverflow.com/questions/21644848/… -
我不知道如何在那里获得名称,但这有效:
md %>% group_by(device) %>% summarise_each(funs(counts=sum(.==5,na.rm=TRUE))) -
@Frank 可能是
md %>% group_by(device) %>% select_(.dots=myvars) %>% summarise_each(funs(counts=sum(.==5,na.rm=TRUE)))或只是md %>% group_by(device) %>% summarise_each_(funs(counts=sum(.==5, na.rm=TRUE)), myvars) -
@akrun 当我运行其中任何一个(R 3.2.0,dplyr 0.4.1)时,结果中仍然没有名称。似乎
summarise_each只是忽略了funs中的名称... -
@Frank 没关系,我有不同的想法。我猜你是在谈论
count.a、count.b等名称,对吧