不同长度的数据帧

时间:2016-06-30 19:50:17

标签: r time-series dataframe

我正在查看道琼斯指数和FSTE100的时间序列,但由于交易日的影响,它们的长度不一样。我怎样才能在R中解决这个问题?

我看到了一段代码片段,我试图调整它的数据,如下所示:

zz <- merge(ftse100$Date, djia$Close, all = TRUE)
zz[is.na(zz)] <- 0
View(zz)

但它没有给我我想要的结果,它是重复行,所以我试着自己做:

z<-setdiff(ftse100$Date,djia$Date)
print(length(z))

for (i in 1:length(z) )  {
    index = match(c(z[i]), ftse100$Date)
    ftse100 <- ftse100[-c(index),]
}
print(NROW(ftse100))

但我必须对所有数据帧执行此操作并且它变得越来越复杂。有没有办法删除每个数据框中没有的日期?

1 个答案:

答案 0 :(得分:1)

我认为这可能会做你想要的:

set.seed(2)
stocksA <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
stocksB <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
stocksC <- data.frame(Date=sample(1:10, 7), price=rnorm(7))
sharedDates <- intersect(intersect(stocksA$Date, stocksB$Date), stocksC$Date)
relevantA <- stocksA[stocksA$Date %in% sharedDates, ]
relevantA

这给了我:

  Date      price
1    2  0.9678839
2    7  0.1256203
6    8 -0.7526655

如果您需要为大量数据集执行此操作,您当然可以利用一些循环...