鉴于下面的foo
,我试图基于y
值的子集的平均值计算三组id
的{{1}}异常。对于dplyr语法,我看不到前进的方向,但必须有一种简单的方法。
也就是说,我想要一种计算新列y
的方法,对于每个yAnom
来说,y-mean(y)
的值就是y
的{{1}}。 Base R解决方案:
x<=5
帮助表示赞赏。
答案 0 :(得分:1)
也许类似以下内容:
foo %>%
# new column with only the values you want to average over, and NA elsewhere
mutate(y_when_x_under_5 = ifelse(x <= 5, y, NA)) %>%
# new column with mean for each group
group_by(id) %>%
mutate(y_mean = mean(y_when_x_under_5, na.rm = TRUE)) %>%
# required calculation
mutate(yAnom = y - y_mean)