You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言统计数据框每行中值大于100的列的出现频次?

问题原因及解决方法

你的代码错误在于c(8:52>100)这部分——它是在判断数字8到52是否大于100,这些数字最大仅为52,全部满足FALSE,所以求和结果必然是0,完全没有读取数据框里的实际行值。

正确解法1:保留rowwise()逻辑

使用c_across()来获取每行指定列范围(第8到52列)的数值,再统计大于100的频次:

df %>%
  rowwise() %>%
  mutate(foo = sum(c_across(8:52) > 100, na.rm = TRUE))

正确解法2:矢量化计算(更高效,适合大数据集)

对于几千行的数据集,rowwise()效率较低,推荐用rowSums()直接做矢量化运算:

df %>%
  mutate(foo = rowSums(select(., 8:52) > 100, na.rm = TRUE))

select(., 8:52)选取第8到52列,>100将列内数值转为逻辑矩阵(TRUE=1,FALSE=0),rowSums()直接对每行求和得到频次。

验证结果

以你提供的数据集为例:

  • 第1行的S026463.R1=153、S026477.R1=780,所以foo应为2
  • 第5行的S026428.R1=1049,所以foo应为1

内容的提问来源于stack exchange,提问作者sscoresby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:31:12