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

在R中针对指定列使用for循环执行cohen.d计算的方法

计算分组变量下各数值列的Cohen's d效应量

第一步:准备工作

先安装并加载effsize包(首次使用需要执行安装步骤):

install.packages("effsize")
library(effsize)

第二步:用for循环批量处理

通过循环遍历num1、num2、num3三个列,每一步先过滤掉对应列的NA值,再计算效应量:

# 指定要处理的数值列名
target_cols <- c("num1", "num2", "num3")
# 初始化列表存储结果
result_list <- list()

# 遍历每个数值列
for (col_name in target_cols) {
  # 筛选出当前数值列非NA的行,仅保留分组列和当前数值列
  clean_data <- df[!is.na(df[[col_name]]), c("Letter", col_name)]
  # 计算Cohen's d,使用公式格式更直观
  d_result <- cohen.d(reformulate("Letter", response = col_name), data = clean_data)
  # 将结果存入列表,以列名作为标识
  result_list[[col_name]] <- d_result
}

# 查看所有结果
result_list

可选:直接打印每个列的结果

如果不需要存储结果,只想直接输出每列的计算内容,可以修改循环逻辑:

for (col_name in target_cols) {
  clean_data <- df[!is.na(df[[col_name]]), c("Letter", col_name)]
  d_result <- cohen.d(reformulate("Letter", response = col_name), data = clean_data)
  cat("=== 列", col_name, "的Cohen's d结果 ===\n")
  print(d_result)
  cat("\n")
}

关键细节说明

  • clean_data <- df[!is.na(df[[col_name]]), c("Letter", col_name)]这一步会精准过滤掉当前数值列含NA的行,确保计算时只用到有效数据。
  • 使用reformulate构建公式(数值列 ~ Letter),是cohen.d推荐的用法,比单独传递两个向量更严谨,也能避免数据错位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:33:19