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

R语言计算test与ref列对数差值均值并新增至数据集的方法求助

实现方案

你可以直接按行计算两个对数差的均值,无需生成中间的对数列,以下提供两种常用实现方式:

基础R实现

假设你的数据集存储在数据框df中,一行代码即可完成计算:

df$mean_log_diff <- rowMeans(log(df[, c("test1", "test2")]) - log(df[, c("ref1", "ref2")]))

如果后续test/ref配对数量增加,也可以用正则匹配批量取列,无需手动写全列名:

test_cols <- grep("^test", names(df), value = T)
ref_cols <- grep("^ref", names(df), value = T)
df$mean_log_diff <- rowMeans(log(df[, test_cols]) - log(df[, ref_cols]))

dplyr实现(更适合批量处理多配对列的场景)

library(dplyr)
df <- df %>%
  # 按行计算
  rowwise() %>%
  mutate(
    # 自动匹配所有test/ref列,计算对数差后取均值
    mean_log_diff = mean(log(c_across(starts_with("test")) / c_across(starts_with("ref"))))
  ) %>%
  ungroup()

以上两种方法都只会在原数据集上新增1个结果列mean_log_diff,不会产生多余的中间列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 21:06:02