我合并了两个不同频率的动物园时间序列
一个包含月度数据,另一个包含季度数据。
library(Quandl)
myDataFormat <- "zoo"
pmi <- Quandl("FRED/NAPM", type = myDataFormat)
gdp <- Quandl("FRED/A191RO1Q156NBEA", type = myDataFormat)
pp <- aggregate(pmi, as.yearmon)
gg <- aggregate(gdp, as.yearmon)
mrg <- merge(pp,gg)
mrg.tail <- tail(mrg,20)
mrg.tail现在包含
pp gg
sep 2014 55.8 NA
okt 2014 57.3 2.5
nov 2014 57.5 NA
dec 2014 54.9 NA
jan 2015 53.9 2.9
feb 2015 53.3 NA
mrt 2015 52.3 NA
apr 2015 51.6 2.7
mei 2015 53.1 NA
jun 2015 53.1 NA
jul 2015 51.9 2.1
aug 2015 51.0 NA
sep 2015 50.0 NA
okt 2015 49.4 2.0
nov 2015 48.4 NA
dec 2015 48.0 NA
jan 2016 48.2 2.0
feb 2016 49.5 NA
mrt 2016 51.8 NA
apr 2016 50.8 NA
我正在寻找一种方法来延迟gg列1个月 所以,结果应该是这样的
pp gg gg_new
sep 2014 55.8 NA 2.5
okt 2014 57.3 2.5 NA
nov 2014 57.5 NA NA
dec 2014 54.9 NA 2.9
jan 2015 53.9 2.9 NA
feb 2015 53.3 NA NA
mrt 2015 52.3 NA 2.7
apr 2015 51.6 2.7 NA
mei 2015 53.1 NA NA
jun 2015 53.1 NA 2.1
jul 2015 51.9 2.1 NA
aug 2015 51.0 NA NA
sep 2015 50.0 NA 2.0
okt 2015 49.4 2.0 NA
nov 2015 48.4 NA NA
dec 2015 48.0 NA 2.0
jan 2016 48.2 2.0 NA
feb 2016 49.5 NA NA
mrt 2016 51.8 NA NA
apr 2016 50.8 NA NA
gg_new值向上移动1个月 有人知道怎么做吗?
答案 0 :(得分:3)
使用> merge(mrg.tail, g1 = lag(mrg.tail$gg), all = c(TRUE, FALSE))
pp gg g1
Sep 2014 55.8 NA 2.5
Oct 2014 57.3 2.5 NA
Nov 2014 57.5 NA NA
Dec 2014 54.9 NA 2.9
Jan 2015 53.9 2.9 NA
Feb 2015 53.3 NA NA
Mar 2015 52.3 NA 2.7
Apr 2015 51.6 2.7 NA
May 2015 53.1 NA NA
Jun 2015 53.1 NA 2.1
Jul 2015 51.9 2.1 NA
Aug 2015 51.0 NA NA
Sep 2015 50.0 NA 2.0
Oct 2015 49.4 2.0 NA
Nov 2015 48.4 NA NA
Dec 2015 48.0 NA 2.0
Jan 2016 48.2 2.0 NA
Feb 2016 49.5 NA NA
Mar 2016 51.8 NA NA
Apr 2016 50.8 NA NA
并将其与原始版本合并,保留原始月份,但不会超出该范围之外的任何月份。
lag(mrg.tail, 0:1)
对于略有不同的结果,请查看onChange: function(value, text, choice) {
$(this).children('option[value=' + $(choice).data('value') + ']').data('wsg')
}
。
答案 1 :(得分:0)
您可以使用for循环执行此操作:
for(i in 1:(nrow(mrg.tail)-1){ # Loop through all but last row
mrg.tail$gg_new[i] = mrg.tail$gg[i+1]
}
mrg.tail$gg_new[nrow(mrg.tail)] = NA # This is to take care of the last row