滞后差异
Lagged differences
示例数据:
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)))
但是当我引入高阶滞后(例如从第三行减去第一行)时,我得到如下错误:"arguments imply differing number of rows: 157, 158"。我尝试与 NA 一起玩,但无济于事。
编辑:示例数据
使用 dplyr 很容易
library(dplyr)
df %>%
group_by(Country, Category) %>%
mutate(
deltaLag1 = Value - lag(Value, 1),
deltaLag2 = Value - lag(Value, 2)
)
示例数据:
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)))
但是当我引入高阶滞后(例如从第三行减去第一行)时,我得到如下错误:"arguments imply differing number of rows: 157, 158"。我尝试与 NA 一起玩,但无济于事。
编辑:示例数据
使用 dplyr 很容易
library(dplyr)
df %>%
group_by(Country, Category) %>%
mutate(
deltaLag1 = Value - lag(Value, 1),
deltaLag2 = Value - lag(Value, 2)
)