使用dplyr按x唯一值分组计算y标准差并生成汇总数据框
你之前搭配group_by使用mutate没有得到预期结果,原因是mutate只会在原数据集的每行新增列,不会执行分组聚合操作,要得到每个x唯一值对应一行的汇总结果,需要搭配summarise(或summarize)函数实现,完整实现代码如下:
# 加载dplyr包 library(dplyr) # 构造示例数据集,实际使用时替换为你自己的数据集即可 df <- data.frame( ID = 1:6, x = c(1, 2, 3, 1, 2, 3), y = c(4, 3, 7, 2, 6, 8) ) # 管道操作分组计算目标字段 result <- df %>% group_by(x) %>% summarise( count_y = n(), # 统计当前分组内y值的数量 Std_Dev = round(sd(y, na.rm = TRUE), 2) # 计算y的标准差,保留2位小数 ) # 输出结果 print(result)
运行后输出结果如下:
# A tibble: 3 × 3 x count_y Std_Dev <dbl> <int> <dbl> 1 1 2 1.41 2 2 2 2.12 3 3 2 0.71
注:你示例中x=2的标准差结果2.21为笔误,对应你给出的数据集,x=2对应的y值为3和6,实际标准差约为2.12。如果你的实际数据存在缺失值,na.rm = TRUE参数会自动跳过NA值计算,无需额外预处理。
内容的提问来源于stack exchange,提问作者Jake Parker
相关产品推荐
相关产品推荐

