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

R语言统计DataFrame每行指定区间数值出现次数代码问题求解

错误原因
  • 区间逻辑和需求完全不匹配:你代码的判断逻辑和注释的统计目标完全写反,sumTP对应的代码判断是>0.2,但注释标注统计-0.20.2区间;`sumFN`对应的代码判断是-0.20.2,但注释标注统计0.2~1区间。
  • 缺少区间上限判断:0.2~1区间的统计逻辑没有加≤1的限制,所有大于0.2的数值(包括示例数据中大于1的极端值)都会被计入,导致结果偏高。
  • 边界规则不明确:你定义的三个区间存在边界重叠问题,比如等于-0.2、等于0.2、等于1的数值没有明确归属,会导致统计漏算或重复计算。
修正后的基础实现代码

你可以直接调整判断逻辑,按需调整边界的不等号即可,这里默认规则:< -0.2、-0.2≤x≤0.2、0.2<x≤1

# 统计< -0.2的次数
df5$sumFP <- rowSums(df5[,-1] < -0.2)
# 统计-0.2~0.2的次数
df5$sumMid <- rowSums(df5[,-1] >= -0.2 & df5[,-1] <= 0.2)
# 统计0.2~1的次数
df5$sumTP <- rowSums(df5[,-1] > 0.2 & df5[,-1] <= 1)

如果要保留你原来的sumFP/sumTP/sumFN命名,按需替换上述代码的列名即可。

更稳健的多区间统计实现

如果后续需要调整区间分界点,推荐用cut函数统一处理,避免重复写判断逻辑出错:

# 定义区间分界点和对应标签
breaks <- c(-Inf, -0.2, 0.2, 1)
labels <- c("sumFP", "sumMid", "sumTP")

# 按行统计各区间出现次数,合并到原数据框
df5 <- cbind(df5, t(apply(df5[,-1], 1, function(x) {
  table(cut(x, breaks = breaks, labels = labels, include.lowest = FALSE))
})))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:21:02