r - 试图找出 R 组内周间美元的百分比变化
问题描述
我有一个类似于以下的df(更大):
df = data.frame(r_id = c(1, 1 ,1, 1, 2,2,2,2, 3,3,3,3), s_id = c(1,2,3,4,5,6,7,8,9,10, 11,12),
week = c(2021080801, 2021080101, 2021072501, 2021071801, 2021080801, 2021080101, 2021072501, 2021071801, 2021080801, 2021080101, 2021072501, 2021071801),
price = c(96992.88, 104458.36, 106485.10, 105094.09, 103550.74,
104990.28, 109912.51, 116662.20, 113178.26, 111779.15, 120553.04, 123132.30))
r_id 列分为不同的类别。每个组包含一定的周数和每周相关的美元金额。我试图在每个组中找到前一周每一美元金额之间的百分比变化,并将其保存在数据框中自己的列中。例如对于 r_id 1,我想计算从第 2021080801 周到第 2021080101 周、然后从第 2021080101 周到第 2021072501 周的百分比差异,依此类推。但是,第 2021071801 周不会有任何百分比变化,因为在组中没有前一周。
我知道如何通过以下方式使用滞后来获得差异:
df = df %>% group_by(r_id) %>%
mutate(change = price - lag(price))*100/lag(price))
但是顺序是相反的,当应用于我更大的数据集时,百分比似乎是关闭的......
解决方案
也许使用lead
library(dplyr)
df %>%
group_by(r_id) %>%
mutate(change = (price - lead(price)) * 100 /lead(price))
推荐阅读
- json - 翻译邮件通知
- sql - T-SQL 长动态查询被切断
- rust - 如何创建返回借用值的函数?
- c - 如何为指向 int 的指针数组正确释放动态分配的内存
- python-3.x - python3,试图从我定义的函数中获取输出,需要一些指导
- javascript - 调用SectionList的scrollToLocation方法后,scroll在跳跃
- java - 从 HashMap 创建 JList
- keras - 如何解释神经网络的预测
- docker - 在 Alpine Docker 容器中从源代码编译 Go 时出错:“loadinternal:找不到运行时/cgo”
- c# - 如何在 C# 中将 apikey 与 Google.Cloud.Speech.V1 一起使用?