R语言中求均值的均值与标准差的更优雅写法咨询
优化后的简洁实现方案
核心需求简化版(仅计算组均值的均值和标准差)
如果你的目标只是得到均值的均值和均值的标准差,不需要保留每个组的标准差、中位数等额外统计量,可以直接简化成一条管道链,省去中间变量:
datz2 %>% group_by(profile_name) %>% summarize(group_avg = mean(average_hr_times_min, na.rm = TRUE)) %>% ungroup() %>% summarize(mean_of_means = mean(group_avg), sd_of_means = sd(group_avg))
保留组统计量的完整版
如果需要保留每个组的均值、标准差、中位数,同时得到汇总的两个统计量,可以这样写,避免重复计算:
datz2 %>% group_by(profile_name) %>% summarize(average = mean(average_hr_times_min, na.rm = TRUE), sd = sd(average_hr_times_min, na.rm = TRUE), median = median(average_hr_times_min, na.rm = TRUE)) %>% ungroup() %>% # 一次性计算汇总统计量,无需分开两次summarize summarize(mean_of_mean = mean(average), sd_of_mean = sd(average), .groups = "drop")
优化点说明
- 用管道操作串联所有步骤,无需单独定义
grouped_df、summarized_df等中间变量,逻辑更连贯 - 合并了原代码中两次独立的
summarize操作,一次算出两个目标统计量,减少重复代码 - 去掉了非必需的
glimpse(如果需要调试分组结果,可在group_by后添加%>% glimpse())
内容的提问来源于stack exchange,提问作者jtjtjtjt
相关产品推荐
相关产品推荐

