r - 计算在多个变量上具有特定值的组数

标签 r grouping

我有一个数据框,例如:

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/

相关文章:

c# - 复杂对象上的 GroupBy(例如 List<T>)

r - 将分组的 geom_vline 添加到多个方面

r - 标题R为中心的空剧情

r - 如何保存每次优化迭代的系数?

r - 在 r 中添加带有堆积条形图的非线性线

java - “Group” vecmath 根据对象之间的距离点对象

java - 使用 Java 集合对对象列表进行分组和计数

javascript - 如何对对象数组进行分组和求和?

r - 将最后两位数字更改为 "00"

r - 使用热键执行 R 脚本