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

R按物种分组计算多变量相关性并导出csv文件的实现方法

R实现鱼类数量与环境因子分组相关性计算的方案

依赖包

仅需tidyverse系列包即可完成全部需求:

install.packages("tidyverse") # 未安装的话先执行这行
library(tidyverse)

核心实现代码

将你提供的示例数据加载到R环境后,执行以下代码即可:

# 1. 定义需要计算相关性的环境因子列
env_cols <- c("temp", "sal", "do", "depth")

# 2. 自定义相关性计算函数,支持切换相关方法
calc_group_corr <- function(df, corr_method = "pearson") {
  # 计算当前分组下num的均值、中位数
  num_basic_stats <- df %>%
    summarise(
      num_mean = mean(num, na.rm = TRUE),
      num_median = median(num, na.rm = TRUE),
      .groups = "drop"
    )
  
  # 逐列计算num和环境因子的相关系数、显著性p值
  corr_result <- purrr::map_dfr(env_cols, function(env_col) {
    # 跳过全为常量的情况避免报错
    if (length(unique(df$num)) == 1 || length(unique(df[[env_col]])) == 1) {
      return(tibble(env_factor = env_col, corr_coef = NA, p_value = NA))
    }
    test_res <- cor.test(df$num, df[[env_col]], method = corr_method, use = "pairwise.complete.obs")
    tibble(
      env_factor = env_col,
      corr_coef = test_res$estimate,
      p_value = test_res$p.value
    )
  })
  
  # 合并基础统计量和相关性结果返回
  return(bind_cols(num_basic_stats, corr_result))
}

# 3. 按物种分组执行计算,可自行修改corr_method参数为pearson/kendall/spearman
output_result <- zeros %>%
  group_by(group) %>%
  group_modify(~ calc_group_corr(.x, corr_method = "spearman")) %>%
  ungroup()

# 4. 保存结果为csv文件
write.csv(output_result, "fish_env_correlation_result.csv", row.names = FALSE, na = "")

结果说明

输出的CSV文件包含以下字段:

  • group:物种名称
  • num_mean:当前物种所有观测的数量均值
  • num_median:当前物种所有观测的数量中位数
  • env_factor:环境因子名称
  • corr_coef:对应方法计算得到的相关系数
  • p_value:相关性检验的显著性p值

注意:如果某组的鱼类数量全部为固定值(比如示例数据中部分物种的num全为0),则相关系数和p值会返回NA,属于正常情况,常量无法和变量计算相关性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:57:03