dplyr,R:一次计算多列中的特定值[重复]

2024-01-04

我有一个数据框:

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等等手动 - 数十次。

Does dplyr允许对所有的 5 秒进行计数myvars立即列?

谢谢你!


如果您关心以“counts”开头的名称。你可以在 dplyr 管道中这样做:

md %>% 
  group_by(device) %>% 
  summarise_each_(funs(sum(.==5,na.rm=TRUE)), myvars) %>% 
  setNames(c(names(.)[1], paste0("counts.", myvars)))
#Source: local data frame [3 x 4]
#
#  device counts.a counts.b counts.c
#1      1        1        2        0
#2      2        0        1        0
#3      3        1        0        2

还有另一个关于如何命名 dplyr 生成的新列的问答mutate_each(其行为方式与summarise_each) here: dplyr 中的 mutate_each:如何选择某些列并为变异列指定新名称? https://stackoverflow.com/questions/27027347.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dplyr,R:一次计算多列中的特定值[重复] 的相关文章

随机推荐