【发布时间】:2023-03-14 02:34:01
【问题描述】:
鉴于下面的foo,我正在尝试根据y 值子集的平均值计算三组id 的异常y。在 dplyr 语法方面我看不到前进的方向,但必须有一个简单的方法。
也就是说,我想要一种方法来计算一个新列yAnom,即y-mean(y),当x<=5为每个id时,y的值。基础 R 解决方案:
foo <- tibble(x = rep(1:10,3), y = rnorm(30), id = rep(letters[1:3],each=10))
# subtract y from mean of y for values of y when x <= 5 by group
#E.g.,
y5Means <- foo %>% group_by(id) %>% filter(x <= 5) %>% summarise(avg = mean(y)) %>% pull(avg)
foo$yAnom <- c(foo$y[foo$id == "a"] - y5Means[1],
foo$y[foo$id == "b"] - y5Means[2],
foo$y[foo$id == "c"] - y5Means[3])
帮助表示赞赏。
【问题讨论】: