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

R中对多组列对应用自定义函数计算差异与一致率生成汇总表

实现方案

依赖包

需要提前加载以下工具包:

library(dplyr)
library(purrr)
# 如果使用下方备选方案还需加载 tidyr
# library(tidyr)

核心代码

你之前定义的数据集df和compare_fun无需修改,直接运行以下代码即可得到目标汇总表:

# 提取所有配对参数的公共前缀(剔除_ptak后缀)
param_prefix <- unique(gsub("_ptak$", "", names(df)))

# 批量遍历所有参数对计算指标
result <- map_dfr(set_names(param_prefix), function(p) {
  diff_val <- compare_fun(df[[p]], df[[paste0(p, "_ptak")]])
  tibble(
    sum = sum(diff_val),
    agree_pct = (nrow(df) - sum(diff_val)) / nrow(df) * 100
  )
}, .id = "param") %>%
  column_to_rownames("param")

输出结果

打印result即可得到你需要的格式:

sum agree_pct
DH   2        80
SZ   3        70
RM   5        50

备选方案(仅使用tidyverse长表转换逻辑)

如果更习惯用dplyr+tidyr的语法,也可以用宽转长的方式实现:

result <- df %>%
  mutate(id = row_number()) %>%
  pivot_longer(-id, names_to = c("param", ".value"), names_pattern = "(.*)_(ptak)") %>%
  rename(c1 = "NA", c2 = ptak) %>%
  mutate(diff = compare_fun(c1, c2)) %>%
  group_by(param) %>%
  summarise(
    sum = sum(diff),
    agree_pct = (n() - sum(diff)) / n() * 100
  ) %>%
  column_to_rownames("param")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:15:02