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

R中统计数据框内大于20的观测值数量结果与实际不符如何处理

问题原因

你构造数据框时,所有数值列的元素都用引号包裹,导致这些列的类型为字符型,而非数值型。直接执行>比较时,R会按字符串字典序而非数值大小进行判断:
字符串的比较规则是逐位对比字符的ASCII码值,9的ASCII码远大于2,因此所有以9开头的字符串(比如你数据里的"9.83546459757003")都会被判定为大于20,这部分多出来的3个误判结果,加上真实大于20的8个数值,刚好得到总和11。

验证方法

你可以执行以下代码查看列类型验证问题:

# 查看各列的数据类型
sapply(df, class)
# 测试字符串比较逻辑
"9.8" > 20 # 返回值为TRUE,就是错误来源
解决方案

先将除第一列ID外的所有列转换为数值型,再做统计即可得到正确结果:

# 转换列类型
df[, -1] <- lapply(df[, -1], function(x) as.numeric(as.character(x)))
# 重新统计
sum(df[,-1] > 20, na.rm = TRUE)
# 此时返回结果为8,和手动统计一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:02