对于多种货币,我有几年的每日数据。我想将数据集中的变量延迟一个月(即6月15日至7月15日,不一定是30天)。在不可能的地方,NA很好。
到目前为止,我已经写过类似的东西:
ddply(Data, .(Currency), function(x){ #First column is date, 2nd is Currency, rest data.
y=x[,-(3)] #this is all data I want lagged
y$date=as.Date(y$date) %m+% months(1) #This increases the dates by one month
x$date=as.Date(x$date) #what data I dont want lagged is x[, (1:3)] below
z=merge(x[,(1:3)], y, by=c("date", "Currency")) #merge by date,
#lagged stuff merges with non-lagged stuff 1 month later than original obs date
return(z)
})
如果有必要,我可以包含数据,但鉴于我已经有了一些可行的东西,我不希望任何人花时间在它上面。
我只想检查我是否无法在滞后函数中使用lubridate%m +%months(1)语法。我已尝试过包" statar"它使用了by_by语法,但还没有能够解决它。
谢谢!