R语言:按Location和Vegetation.type分组求和Area列值
R语言分组求和:按采样点+植被类型汇总斑块面积
给你两个简单易用的方法,都是R里处理这类分组汇总的常用方式:
方法一:Base R 原生函数(无需额外安装包)
用aggregate()函数直接实现,语法简洁:
# 假设你的原始数据框名为 df summed_data <- aggregate(Area ~ Location + Vegetation.type, data = df, FUN = sum)
Area ~ Location + Vegetation.type:定义分组规则——按Location和Vegetation.type的组合分组,对Area列进行计算FUN = sum:指定对分组后的Area执行求和操作
方法二:tidyverse 包(代码更易读,适合新手理解)
如果习惯更贴近自然语言的写法,可以用dplyr包:
# 先安装并加载包(第一次用需要安装) install.packages("dplyr") library(dplyr) summed_data <- df %>% group_by(Location, Vegetation.type) %>% # 指定分组列 summarise(Total_Area = sum(Area), .groups = "drop") # 求和并取消分组状态
group_by():明确指定用于分组的两个列summarise():生成汇总结果,这里把求和后的面积命名为Total_Area,.groups = "drop"确保输出是普通数据框而非分组对象
示例测试
你可以用下面的示例数据快速验证效果:
# 构造示例数据框 df <- data.frame( Location = c("样点1", "样点1", "样点1", "样点2", "样点2"), Vegetation.type = c("草地", "林地", "草地", "林地", "灌丛"), Area = c(12, 25, 18, 30, 22) )
运行上述任意一种方法后,会得到这样的结果:
| Location | Vegetation.type | Total_Area/Area |
|---|---|---|
| 样点1 | 草地 | 30 |
| 样点1 | 林地 | 25 |
| 样点2 | 林地 | 30 |
| 样点2 | 灌丛 | 22 |
内容的提问来源于stack exchange,提问作者bespluga
相关产品推荐
相关产品推荐

