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

如何在R中按站点编号汇总多条目下的蚯蚓类群数据?

按站点分组汇总蚯蚓类群数据的R实现

方法1:使用tapply函数(教授提到的方法)

假设你的数据存储在名为earthworms的数据框中,包含Site(站点编号)和Juv、Epi、Endo、Ane、Unk这些蚯蚓类群列。

tapply的核心是对数值向量按分组变量批量应用函数(这里用求和),具体代码如下:

# 对每个类群列按站点求和,na.rm=TRUE用于忽略缺失值
juv_total <- tapply(earthworms$Juv, earthworms$Site, sum, na.rm = TRUE)
epi_total <- tapply(earthworms$Epi, earthworms$Site, sum, na.rm = TRUE)
endo_total <- tapply(earthworms$Endo, earthworms$Site, sum, na.rm = TRUE)
ane_total <- tapply(earthworms$Ane, earthworms$Site, sum, na.rm = TRUE)
unk_total <- tapply(earthworms$Unk, earthworms$Site, sum, na.rm = TRUE)

# 将各列结果合并成目标格式的数据框
summary_result <- data.frame(
  Site = names(juv_total),
  Juv = as.numeric(juv_total),
  Epi = as.numeric(epi_total),
  Endo = as.numeric(endo_total),
  Ane = as.numeric(ane_total),
  Unk = as.numeric(unk_total)
)

# 查看最终汇总结果
print(summary_result)

方法2:使用dplyr包(更直观的新手友好方法)

如果觉得tapply逐个处理列太繁琐,推荐用dplyr包的分组汇总功能,代码更简洁易读:

# 首次使用需安装包(只需运行一次)
# install.packages("dplyr")
library(dplyr)

summary_result <- earthworms %>%
  group_by(Site) %>%  # 按站点编号分组
  summarise(          # 对每个类群列求和
    Juv = sum(Juv, na.rm = TRUE),
    Epi = sum(Epi, na.rm = TRUE),
    Endo = sum(Endo, na.rm = TRUE),
    Ane = sum(Ane, na.rm = TRUE),
    Unk = sum(Unk, na.rm = TRUE)
  )

print(summary_result)

两种方法都会输出你需要的格式:每个站点一行,对应各类群的总数。如果某个站点没有某类群的记录,求和结果会自动显示为0(配合na.rm=TRUE可避免缺失值干扰)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:50:45