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

R语言如何批量实现150列与36列的Pearson相关性分析?

批量实现X变量与Y变量的Pearson相关性分析

问题背景

需要对150个X变量(x1至x150)与36个Y变量(y1至y36)逐一做Pearson相关性检验,手动重复操作效率极低,需批量实现,同时将每个X变量的分析结果保存为全局环境中对应命名的数据框。

示例数据集

df <- structure(list(x1 = c(0.2569, 0.0145896, 0.0369, 0.025986,
                     0.12569, 0.3695), x2 = c(0.125, 0.04582, 0.2569, 0.256369, 0.25698, 0.1456), x3 = c(0.2584, 0.05698, 0.1258, 0.2569, 0.098563, 0.1569), 
                          y1 = c(21, 36, 25, 10, 36, 5), y2 = c(12, 25, 13, 44, 69,23)), row.names = c(NA, -6L), class = "data.frame")

解决方案

不需要单独存储Y列,直接从原数据框中提取即可,以下提供两种实现方式:

方法一:基础for循环

适合新手理解逻辑:

  1. 先提取X和Y列的名称:
# 筛选所有以x开头的列
x_cols <- grep("^x", names(df), value = TRUE)
# 筛选所有以y开头的列
y_cols <- grep("^y", names(df), value = TRUE)
  1. 循环遍历每个X变量,计算与所有Y变量的相关性,并保存结果:
for (x_var in x_cols) {
  # 初始化空列表存储结果
  result_list <- list()
  
  for (y_var in y_cols) {
    # 执行相关性检验
    cor_result <- cor.test(df[[x_var]], df[[y_var]], method = "pearson")
    
    # 提取相关系数和p值,整理成数据框行
    result_row <- data.frame(
      Y_variable = y_var,
      Pearson_correlation = cor_result$estimate,
      p_value = cor_result$p.value
    )
    
    result_list[[y_var]] <- result_row
  }
  
  # 将列表合并为数据框
  final_result <- do.call(rbind, result_list)
  
  # 将结果保存到全局环境,命名与X变量一致
  assign(x_var, final_result, envir = .GlobalEnv)
}

执行后,全局环境中会生成x1、x2等数据框,每个数据框包含对应X变量与所有Y变量的相关系数和p值。

方法二:用purrr包实现更简洁的批量处理

如果熟悉tidyverse,用purrr可以更高效:

library(purrr)
library(dplyr)

# 提取X列名
x_cols <- grep("^x", names(df), value = TRUE)

# 定义单个X变量的分析函数
analyze_x <- function(x_var) {
  y_cols <- grep("^y", names(df), value = TRUE)
  
  map_dfr(y_cols, function(y_var) {
    cor_result <- cor.test(df[[x_var]], df[[y_var]], method = "pearson")
    data.frame(
      Y_variable = y_var,
      Pearson_correlation = cor_result$estimate,
      p_value = cor_result$p.value
    )
  })
}

# 批量处理并将结果存入全局环境
map(x_cols, ~ assign(.x, analyze_x(.x), envir = .GlobalEnv))

验证结果

执行完代码后,可通过查看x1数据框验证:

print(x1)

输出示例:

Y_variable Pearson_correlation   p_value
1        y1           -0.7421281 0.0784801
2        y2           -0.6068858 0.1820644

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:36