如何对齐日期以合并两个xts文件?

问题描述 投票:2回答:3

我正在尝试通过将两个数据系列合并到一个文件中来分析R中1年变化百分比的数据。一个系列是每周,另一个是每月。问题是将每周系列转换为每月系列。在通过apply.monthly()合并两个文件后,在每周数据上使用merge.xts()会创建一个月度文件,但其月内日期与月度系列中的月首日格式不匹配。问题:如何将两个系列的结果合并文件(以下示例)更改为一个月条目?

2012-11-01 0.02079801          NA
2012-11-24         NA -0.03375796
2012-12-01 0.02052502          NA
2012-12-29         NA  0.04442094
2013-01-01 0.01881466          NA
2013-01-26         NA  0.06370272
2013-02-01 0.01859883          NA
2013-02-23         NA  0.02999318
r merge xts apply
3个回答
4
投票

您可以在呼叫中将indexAt="firstof"传递给to.monthly,以使用索引的当月第一个月获取每月数据。

library(quantmod) 
getSymbols(c("USPRIV", "ICSA"), src="FRED")
merge(USPRIV, to.monthly(ICSA, indexAt="firstof", OHLC=FALSE))

0
投票

类似这样的东西:

do.call(rbind, by(d[-1], d[[1]] - as.POSIXlt(d[[1]])$mday, FUN=apply, 2, sum, na.rm=TRUE))
##                    V2          V3
## 2012-10-31 0.02079801 -0.03375796
## 2012-11-30 0.02052502  0.04442094
## 2012-12-31 0.01881466  0.06370272
## 2013-01-31 0.01859883  0.02999318

请注意,日期被编码为行名,而不是结果中的列。


0
投票

这是一个经常发生的问题。有时我会忘记自己的解决方案,而google不会轻易导致这种情况。所以我在这里发布我的解决方案。

[基本上,只需将每月汇总系列的索引转换为yearmon。您也可以使用yyyy-mm-dd将其转换回as.date格式(每月1号)。除去确切的日期并且索引被“均质化”之后,所有列均会完美对齐。

# Here with dplyr 
time(myxts)<- time(myxts) %>% as.yearmon() %%> as.date()
#or without dplyr
time(myxts)<-  as.date( as.yearmon( time(myxts) )  )
© www.soinside.com 2019 - 2024. All rights reserved.