R Dplyr - 如何使时间序列价格变化

时间:2015-03-02 21:56:17

标签: 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.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我得到了预期的结果,对于所有其他人我得到了一些奇怪的结果......

任何提示?

0 个答案:

没有答案