使用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专栏。

回答

我们可能需要在有元素的地方na.rm处理NA元素作为>/</==返回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)))


以上是使用r对每一行进行条件计数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>