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

R语言如何按SUB分组调用自定义相关系数函数生成分组结果矩阵

R语言按分组计算多组相关系数实现方案

你可以通过以下两种常用方式完成需求:

方案1:Base R原生实现(无需额外安装包)

# 按SUB分组调用自定义Z函数
group_cor_res <- by(data = dat, INDICES = dat$SUB, FUN = function(sub_df) {
  Z(sub_df$A, sub_df$B, sub_df$C)
})
# 合并结果为矩阵并设置行列名
result_mat <- do.call(rbind, group_cor_res)
rownames(result_mat) <- paste0("SUB", rownames(result_mat))
colnames(result_mat) <- c("A/B", "B/C", "C/A")
# 输出结果
print(result_mat)

方案2:tidyverse生态实现(写法更简洁易读)

library(dplyr)
library(tibble)
library(tidyr)

result_mat <- dat %>%
  # 按SUB分组
  group_by(SUB) %>%
  # 每组调用Z函数,返回列表存储三个相关系数
  summarise(cor_list = list(Z(A, B, C))) %>%
  # 拆分列表为三列
  unnest_wider(cor_list, names_sep = "_") %>%
  # 修改列名
  rename("A/B" = cor_list_1, "B/C" = cor_list_2, "C/A" = cor_list_3) %>%
  # 处理行名格式
  mutate(SUB = paste0("SUB", SUB)) %>%
  # 转换为行名+矩阵格式
  column_to_rownames("SUB") %>%
  as.matrix()

# 输出结果
print(result_mat)

注:你问题中给出的SUB2相关系数为示例模拟值,实际运行代码会输出基于分组数据计算的真实结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:06