gpt4 book ai didi

r - 从 dplyr 管道中的当前观察中减去特定数字

转载 作者:行者123 更新时间:2023-12-03 20:25:29 24 4
gpt4 key购买 nike

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

例如,让我们计算平均值 a) 基于实际观察值和 b) 从当前观察值中减去 0.10 时的平均值。该解决方案应该适用于其他计算或功能。

比方说,我们查看三个不同天(day)的三种不同冰(ice_id = ice identifier)的冰价。

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.10),则为当天的平均冰价。

1) 对我来说很清楚,但我如何添加 2)?
da = da %>%
group_by(day) %>%
mutate(mean_dayprice = mean(price),
mean_dayprice_lower = ?)

例如,在第一行 mean_dayprice_lower将由:
((1.60-.10)+2.10+.50)/3 = 1.36666

最佳答案

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

但是,通常您可以使用以下方法。
由于您所需的操作在类次中未进行向量化(即 -0.10)
你可以用 purrr::mapmutate :

da %>%
group_by(day) %>%
mutate(mean_dayprice = mean(price),
mean_dayprice_lower = purrr::map_dbl(1:n(), ~mean(price - if_else(1:n() == .x, 0.1, 0))))

关于r - 从 dplyr 管道中的当前观察中减去特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62244756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com