如何使用R的dplyr包批量统计各站点各日期下不同物种的出现次数
批量统计所有物种各站点各日期出现次数的实现方法
你只需要把Species也加入分组变量,即可一次性得到所有物种的统计结果,无需逐个筛选合并:
方法1:长格式统计结果(推荐,最通用)
返回的结果每行对应「站点+日期+物种」的唯一组合,包含对应出现次数:
library(dplyr) # 写法1:group_by + summarise 实现 DF1_stat <- DF1 %>% group_by(Site, Date, Species) %>% summarise(count_Species = n(), .groups = "drop") # 写法2:count 简写,效果完全一致,代码更简洁 DF1_stat <- DF1 %>% count(Site, Date, Species, name = "count_Species")
说明:参数.groups = "drop"用于统计完成后自动解除分组,避免后续操作出现不必要的分组警告或异常。
方法2:宽格式统计结果
如果需要每个物种单独作为一列,行仅保留站点、日期维度,可以搭配tidyr的宽表转换函数实现:
library(dplyr) library(tidyr) DF1_stat_wide <- DF1 %>% count(Site, Date, Species, name = "count_Species") %>% pivot_wider( names_from = Species, values_from = count_Species, values_fill = 0 # 未出现的物种计数自动填充为0,无需手动处理NA )
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

