如何在R数据集中查找重复测量变异最小的Idm分组
R语言实现重复测量低变异分组筛选
核心实现代码
你可以直接基于tidyverse生态的dplyr完成分组统计和排序,完全匹配你提出的「优先看sd均值、其次看value均值,双低即为低变异分组」的逻辑:
# 加载依赖包 library(dplyr) # 1. 按Idm分组计算所需统计指标 idm_stats <- df %>% group_by(Idm) %>% summarise( # 组内value均值 avg_value = mean(value), # 组内sd均值 avg_sd = mean(sd), # 可选补充:计算变异系数CV=sd/均值,消除数值量级影响,跨组比较变异更客观 cv = avg_sd / avg_value, .groups = "drop" ) # 2. 按双低逻辑排序,排在最前的就是变异最低的分组 sorted_idm <- idm_stats %>% # 先按sd均值升序,再按value均值升序 arrange(avg_sd, avg_value) # 3. 提取变异最低的分组的原始测量数据 lowest_var_id <- sorted_idm$Idm[1] lowest_var_raw <- df %>% filter(Idm == lowest_var_id)
运行结果说明
- 排序后的统计结果中,
AAAAA组的平均sd为372.97、平均value为803.1,是所有分组中双指标最低的,和你观测到的「AAAAA变异最小」的结论一致 - 第二位的
CCCCC组平均sd为914.8、平均value为1081.27,也符合你给出的参考示例特征 - 统计结果和你提供的可视化观测结果完全匹配
自定义调整说明
如果需要调整筛选权重,比如更看重value的大小,只需要修改arrange里的排序顺序即可,例如要优先按value升序,改为arrange(avg_value, avg_sd)即可。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

