dplyr::lag结合mutate计算分组均值差出现NA及自定义参照组问题
按顺序计算相邻组均值差
原代码执行mutate时仍保留Species分组,每个分组仅1行数据,调用lag()仅返回NA,先解除分组再计算即可:
library(tidyverse) library(ggplot2) # mean_se为ggplot2内置函数 iris %>% group_by(Species) %>% group_modify(~ mean_se(.x$Sepal.Length)) %>% ungroup() %>% # 关键:解除分组全局计算lag mutate(difference = y - lag(y))
运行后difference列保留两位小数即可得到你预期的NA、0.93、0.65结果。
指定基准组计算差值
该场景可先按最高层级分组(此处为race),提取对应基准组的均值作为参照值,再批量计算所有分组与基准的差值:
gss_cat %>% group_by(race, marital) %>% group_modify(~ mean_se(.x$age)) %>% group_by(race) %>% # 按race分组,每个race对应一个基准值 mutate( ref_y = y[marital == "No answer"], # 提取当前race下基准组的均值 difference = y - ref_y )
如果不需要保留基准组的差值结果,可在末尾添加filter(marital != "No answer")清理输出。
内容的提问来源于stack exchange,提问作者ibm
相关产品推荐
相关产品推荐

