首页 > 解决方案 > 使用 r 对每一行进行条件计数

问题描述

我尝试了所有解决方案,但我的问题仍然存在。我有一个很大的 df (20rows*400cols) - 对于每一行,我想计算有多少列的值超过 16。

第一个列是因子,其余列是整数。

我的df:

col1 col2 col3 col4
abc   2    16   17    
def   4    2    4     
geh   50   60   73 

期望的输出应该是:

col1 col2 col3 col4 count
abc   2    16   17    1
def   4    2    4     0
geh   50   60   73    3

我试过了df$morethan16 <- rowSums(df[,-1] > 16) ,但后来我进入NAcount专栏。

标签: rdataframedplyrcount

解决方案


只要有元素,我们可能需要na.rmNA元素作为>/</==返回来处理NANA

df$morethan16 <- rowSums(df[,-1] > 16, na.rm = TRUE)

如果我们仍然得到NA,请检查class列的。上面的代码仅在列是numeric. 使用(基于列的值)numeric自动转换为类type.convert

df <- type.convert(df, as.is = TRUE)

检查str结构

str(df)

如果仍然不是numeric,则该列中的某些值可能是character阻止其转换为的元素numeric。强制列numericas.numeric。如果这些是factor列,as.character请先执行

df[-1] <- lapply(df[-1], function(x) as.numeric(as.character(x)))

推荐阅读