从dplyr管道中的当前观测值中减去特定数字

问题描述 投票:3回答:3

在将函数应用于dplyr管道中的数据之前,我想从任何给定的当前观察值中减去一些选择。

例如,让我们根据实际观察值计算平均值a),然后从当前观察值减去0.10时计算平均值b)。该解决方案应适用于其他计算或函数。

比方说,我们在三个不同的日期(天)查看三种不同的冰块(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

现在,我想添加两列:1)根据对三种冰块的真实观测,得出当天的平均冰块价格。2)如果仅将当前行中的冰价格降低0.10(从当前价格观察中减去0.1),则该天的平均冰价。

1)对我很清楚,但是我如何添加2)?

da = da %>%
  group_by(day) %>%
  mutate(mean_dayprice = mean(price),
         mean_dayprice_lower = ?)

例如,在第1行中,mean_dayprice_lower为:(((1.60-.10)+ 2.10 + .50)/ 3 = 1.36666

我想在给dplyr管道中的数据应用函数之前,从任何给定的当前观察值中减去一些选择。例如,让我们根据实际观察结果计算平均值a)...

r dplyr transform mean mutate
3个回答
1
投票

不管输入,第二列将始终减少0.1 / n,其中n是组中的输入数。所以你可以做:


1
投票

除非我不明白这很容易...


1
投票

对于您的特定问题,您可以简单地计算mean(price - 0.1)

© www.soinside.com 2019 - 2024. All rights reserved.