如何在合并的动物园对象中滞后一列
How to lag one column in a merged zoo object
我正在合并 2 个动物园时间序列,频率不同。
一个是月度数据,一个是季度数据。
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 个月。
有人知道怎么做吗?
您可以使用 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
使用 lag
并将其与原始合并,保留原始月份,但不包括任何滞后于该范围之外的月份。
> 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)
。
我正在合并 2 个动物园时间序列,频率不同。
一个是月度数据,一个是季度数据。
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 个月。
有人知道怎么做吗?
您可以使用 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
使用 lag
并将其与原始合并,保留原始月份,但不包括任何滞后于该范围之外的月份。
> 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)
。