如何在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中通过分组变量统计有值的列数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在sum()语句中通过其位置引用data.table的列