如何正确使用dplyr的group_by与summarise()函数计算分组均值?
解决方法:用dplyr计算每个subject_id的收缩压均值
别担心,刚接触编程遇到基础问题太正常啦!我帮你一步步梳理解决:
第一步:修正tibble的创建代码
你给出的tribble写法有语法错误——列名定义后,每一行数据需要明确分隔(换行或用逗号区分),否则R无法正确识别数据结构。正确的创建代码应该是这样:
library(tibble) # 确保加载tibble包 bp_systolic2 <- tribble( ~subject_id, ~time, ~systolic, 1, 1, 120, 1, 2, 118, 1, 3, 121, 2, 1, 125, 2, 2, 131, 3, 1, 141 )
第二步:用dplyr分组计算均值
你的group_by() + summarise()逻辑是完全正确的,只要确保先加载dplyr包,再运行代码即可。如果后续数据出现缺失值,记得给mean()加上na.rm = TRUE参数(你的数据里没有缺失,不过可以记下来备用):
library(dplyr) # 加载dplyr包 # 分组计算收缩压均值 bp_mean <- bp_systolic2 %>% group_by(subject_id) %>% summarise(mean_systolic = mean(systolic, na.rm = TRUE)) # 查看结果 bp_mean
运行后会得到这样的结果:
# A tibble: 3 × 2 subject_id mean_systolic <dbl> <dbl> 1 1 119.7 2 2 128 3 3 141
可能的报错原因排查
如果之前运行你的代码报错,大概率是因为tibble创建错误导致数据结构异常。比如原来的写法会让R把所有数值当成列的一部分,而不是行数据,修正后就能正常运行啦。
内容的提问来源于stack exchange,提问作者Helix
相关产品推荐
相关产品推荐

