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

如何用R检查每行pred与obs值是否相等并计算准确率?

嘿,这个需求在模型评估里太常见啦,用R实现起来非常直观,我给你分享几种实用的方法,你可以根据自己的习惯选:

1. 基础原生R写法(无需额外包)

先假设你的数据框叫df,我们先构造和你示例类似的数据来演示:

# 构造示例数据(对应你说的5行3匹配的情况)
df <- data.frame(
  obs = c(1, 2, 3, 4, 5),
  pred = c(1, 2, 4, 4, 6)
)

然后直接计算准确率:

# 计算匹配比例并转成百分比
accuracy <- mean(df$pred == df$obs) * 100
# 格式化输出结果
cat(sprintf("准确率:%.1f%%\n", accuracy))

原理很简单:df$pred == df$obs会生成一个由TRUE/FALSE组成的逻辑向量,mean()函数对逻辑向量计算时,会把TRUE当作1、FALSE当作0,所以直接取均值就是匹配的比例,乘以100就得到百分比啦。

2. 用dplyr的管道式写法(适合数据处理流)

如果你平时习惯用dplyr做数据处理,这种写法更贴合你的工作流:

# 先加载dplyr包(如果没装的话先运行install.packages("dplyr"))
library(dplyr)

df %>%
  # 新增一列标记每行是否匹配
  mutate(is_match = pred == obs) %>%
  # 计算整体匹配率
  summarise(accuracy = mean(is_match) * 100)

运行后会返回一个包含准确率的数据框,方便你和其他统计结果整合。

小提示:处理缺失值

如果你的数据里有NA(缺失值),记得加上na.rm = TRUE参数,避免缺失值干扰计算结果:

# 带缺失值处理的写法
accuracy <- mean(df$pred == df$obs, na.rm = TRUE) * 100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:17:40