我有一个数据框,例如:

city <- c("a","a","b","b","c","c","c","c","d","e","e","f")
x <- c(0,0,0,1,1,1,0,0,0,1,1,1)
y <- c(1,1,0,0,0,1,1,0,0,1,0,1)
z <- c(1,0,0,0,0,0,0,0,0,0,1,0)
k <- c(1,1,0,0,0,1,0,0,1,0,0,0)
df <- data.frame(city, x, y, z, k)

这里有一个分组变量(例如城市)和几个虚拟变量。我想计算每个虚拟变量= 1的城市数。

到目前为止,我管理的工作是计算有多少城市有特定的虚拟对象= 1:
> n_groups(filter(df, x == 1) %>%
+            group_by(city))
[1] 4

但是,我想知道是否有可能对我的数据框中的所有虚拟对象执行此操作,以便获得如下信息:
var count
 x   4
 y   4
 z   2
 k   3

在这里,我拥有每个虚拟变量等于1(计数列)的城市数量,而不必对样本中的所有虚拟变量进行单独计算。

谢谢你的帮助!

最佳答案

R基:

colSums(rowsum(df[, -1], df[, 1]) > 0)

#x y z k
#4 4 2 3

关于r - 计算在多个变量中具有特定值的组数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51322940/

10-12 17:46
查看更多