2016-03-03 107 views
1

的樣本數據:滯後差異

Date <- as.Date(c('1-01-2008','2-01-2008', '3-01-2008','4-01-2008', '5-01-2008', '1-01-2008','2-01-2008', '3-01-2008','4-01-2008', '5-01-2008'), format = "%m-%d-%Y") 
Country <- c('US', 'US','US','US', 'US', 'JP', 'JP', 'JP', 'JP', 'JP') 
Category <- c('Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple', 'Apple') 
Value <- c(runif(10, -0.5, 10)) 
df <- data.frame(Date, Country, Category, Value) 

我使用下面的一塊內的國家和範疇內計算值的滯後增長率:

df <- ddply(df, .(Country, Category), transform, 
       Growth6m=c(NA, NA, NA, exp(diff(log(Value), lag = 3))-1)) 

現在我試圖讓落後差異而不是增長率。這種精細的工作爲先滯後(即減去前一行值)是這樣的:

df <- ddply(df, .(Country, Category), transform, 
      Growth1m=c(NA, diff(Value))) 

但是當我介紹高階滯後,我得到的錯誤(例如減去第三行的第一行。)如:「參數意味着不同的行數:157,158」。我試着玩NA,但無濟於事。

編輯:樣本數據

+0

請分享例如數據 – mtoto

回答

1

這很容易與dplyr

library(dplyr) 
df %>% 
    group_by(Country, Category) %>% 
    mutate(
    deltaLag1 = Value - lag(Value, 1), 
    deltaLag2 = Value - lag(Value, 2) 
) 
+0

就是這樣,謝謝! – Dreica