我想将当前的观察值从我应用于dplyr管道中的数据的函数中排除,因为我想知道没有该观察值的值。
为简单起见,让我们计算包括当前观察值并排除该观察值的均值。该解决方案应适用于其他计算或函数(在我的情况下,是DescTools包中的Gini函数)。
假设我们在三个不同的日期(天)查看三种不同冰块的冰价(ice_id =冰块标识符)。
da <- data.frame(ice_id = c(1,1,1,2,2,2,3,3,3), day = c(1,2,3,1,2,3,1,2,3), price = c(1.60,1.90,1.80,2.10,2.05,2.30,0.50,0.40,0.35))
da
ice_id day price
1 1 1 1.60
2 1 2 1.90
3 1 3 1.80
4 2 1 2.10
5 2 2 2.05
6 2 3 2.30
7 3 1 0.50
8 3 2 0.40
9 3 3 0.35
我想增加一栏来表示包括当天在内的冰的平均价格,以及一栏来表示不包括当天在内的冰的平均价格。
da = da %>%
group_by(ice_id) %>%
mutate(mean_price = mean(price),
mean_price_without = ?)
如何在没有当前观察值的情况下加上平均价格?
在一般情况下,您可以使用map_dbl
:
library(dplyr)
library(purrr)
da %>%
group_by(ice_id) %>%
mutate(mean_price = mean(price),
mean_price_without = map_dbl(row_number(), ~mean(price[-.x])))