如何在R中通过分组变量统计有值的列数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中通过分组变量统计有值的列数?相关的知识,希望对你有一定的参考价值。

我有这样的数据。

repetition Ob1 Ob2 Ob3 Ob4
1           0   0   0   1
1           0   0   3   0
1           1   3   3   0
1           2   3   3   0
2           4   0   2   2
2           4   0   3   0
2           0   0   0   0
3           0   0   0   0
3           4   0   4   0
3           0   0   0   0

我想计算每一次重复的列数 有一个特定的值,例如1。

所以在这种情况下,重复1应该返回一个2,因为Ob1和Ob4的值是1,其他所有的东西都得到一个0,因为没有其他的重复值是1。

答案

你可以用以下方法获得计数 dplyr 下面的代码包。

df$count <- rowSums(df[,2:5] == df$repetition)
df %>% select(repetition, count) %>% group_by(repetition) %>% summarise(count = sum(count))

# A tibble: 3 x 2
  repetition count
       <int> <dbl>
1          1     2
2          2     2
3          3     0
另一答案

你可以使用 by 像。

by(x[-1]==1, x$repetition, function(y) sum(colSums(y) > 0))
#INDICES: 1
#[1] 2
#------------------------------------------------------------ 
#INDICES: 2
#[1] 0
#------------------------------------------------------------ 
#INDICES: 3
#[1] 0

或者返回一个命名的向量

c(by(x[-1]==1, x$repetition, function(y) sum(colSums(y) > 0)))
#1 2 3 
#2 0 0 

以上是关于如何在R中通过分组变量统计有值的列数?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取sql中给定行具有空值的列数?

如何在sum()语句中通过其位置引用data.table的列

linux文本如何统计列数

matlab中的length表示啥?应该如何使用?

如何在 QTableWidget 中仅获取包含值的行/列数?

如何在 R 中读取具有不同列数的 CSV 文件