按地点分组汇总唯一物种的score统计量(均值、中位数等)
解决方法
你的问题出在之前的代码只是统计了每列的不同值数量,既没有对同一地点的重复物种去重,也没计算你需要的统计量。正确的步骤应该是先去重,再分组计算:
1. 对重复的物种-地点组合去重
因为同一地点的同一物种score值相同,我们先保留每个地点下每个物种的唯一行:
library(dplyr) # 注意:把SPECIES替换成你数据集中实际的物种列名 dataSpp_unique <- dataSpp %>% distinct(PLACE, SPECIES, .keep_all = TRUE)
2. 按地点分组计算目标统计量
基于去重后的数据集,按PLACE分组,计算均值、中位数、标准差(常用的偏差指标)和方差:
result <- dataSpp_unique %>% group_by(PLACE) %>% summarise( 均值 = mean(score, na.rm = TRUE), 中位数 = median(score, na.rm = TRUE), 标准差 = sd(score, na.rm = TRUE), 方差 = var(score, na.rm = TRUE) )
如果需要的是中位数绝对偏差(另一种常用的偏差统计量),可以在summarise里追加一行:
mad_score = mad(score, na.rm = TRUE)
关键细节说明
distinct(PLACE, SPECIES, .keep_all = TRUE):确保每个地点下的每个物种只留一行,避免重复计算相同的score值na.rm = TRUE:忽略缺失值,防止统计计算因缺失值报错- 务必替换代码中的
SPECIES为你数据集里实际的物种列名称
内容的提问来源于stack exchange,提问作者Karoline
相关产品推荐
相关产品推荐

