我最近一直在学习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.5,2.5,4.5,5,7),time=rep("03/02/2015",5))
df <- rbind(df_T0,df_T1)
这导致下表:
brand price time
1 AAA 1.0 03/01/2015
2 BBB 2.0 03/01/2015
3 CCC 3.0 03/01/2015
4 DDD 4.0 03/01/2015
5 EEE 5.0 03/01/2015
6 AAA 1.5 03/02/2015
7 BBB 2.5 03/02/2015
8 DDD 4.5 03/02/2015
9 EEE 5.0 03/02/2015
10 FFF 7.0 03/02/2015
我想使用以下方法比较两个日期之间的价格:
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
只有AAA我得到了预期的结果,对于所有其他人我得到了一些奇怪的结果......
任何提示?