使用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) 但后来我进入NA了count专栏。
回答
我们可能需要在有元素的地方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。强制列numeric与as.numeric. 如果这些是factor列,as.character请先做
df[-1] <- lapply(df[-1], function(x) as.numeric(as.character(x)))