R Dplyr-如何进行时间序列价格变化
我最近一直在学习R,我想为一些产品创建一个价格变化表 例如,我有五种不同产品的两天价格:R Dplyr-如何进行时间序列价格变化,r,dplyr,R,Dplyr,我最近一直在学习R,我想为一些产品创建一个价格变化表 例如,我有五种不同产品的两天价格: library(dplyr) df_T0 <- data.frame(brand=c("AAA","BBB","CCC","DDD","EEE"),price=c(1,2,3,4,5),time=rep("03/01/2015",5)) df_T1 <- data.frame(brand=c("AAA","BBB","DDD","EEE","FFF"),price=c(1
library(dplyr)
df_T0 <- data.frame(brand=c("AAA","BBB","CCC","DDD","EEE"),price=c(1,2,3,4,5),time=rep("03/01/2015",5))
df_T1 <- data.frame(brand=c("AAA","BBB","DDD","EEE","FFF"),price=c(1.5,2.5,4.5,5,7),time=rep("03/02/2015",5))
df <- rbind(df_T0,df_T1)
我想使用以下方法比较两个日期之间的价格:
df1 <- arrange(df,desc(brand,time))
df1 %>% mutate(P_yest=lag(price,1,order_by=brand))
只有AAA我得到了预期的结果,其他所有的我都得到了一些奇怪的结果
有什么提示吗?类似这样的:
df1%>%group\u by(brand)%>%mutate(p\u yest=lag(price,1))
?@stevenbaupré由于dplyr 0.4.1
中的错误,可能无法工作。相反,我们必须手动计算滞后
,例如df%>%groupby(brand)%%>%mutate(P\u yest=c(NA,price[-length(price)])
@MaratTalipov你说得对。我在发布之前没有检查结果。它很有效,谢谢你,玛拉!!!
df1 <- arrange(df,desc(brand,time))
df1 %>% mutate(P_yest=lag(price,1,order_by=brand))
brand price time P_yest
1 FFF 7.0 03/02/2015 5.0
2 EEE 5.0 03/01/2015 4.5
3 EEE 5.0 03/02/2015 5.0
4 DDD 4.0 03/01/2015 3.0
5 DDD 4.5 03/02/2015 4.0
6 CCC 3.0 03/01/2015 2.5
7 BBB 2.0 03/01/2015 1.5
8 BBB 2.5 03/02/2015 2.0
9 AAA 1.0 03/01/2015 NA
10 AAA 1.5 03/02/2015 1.0