【问题标题】:Dataframes of different lengths不同长度的数据帧
【发布时间】:2016-11-03 02:59:03
【问题描述】:

我正在查看 DJIA 和 FSTE100 的时间序列,但由于交易日的原因,它们的长度不同。如何在 R 中解决这个问题?

我看到了一个代码 sn-p,我尝试将它修改为必须像这样的数据:

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))

但我必须对所有数据框都这样做,而且它变得越来越复杂。有没有办法删除不在每个数据框中的日期?

【问题讨论】:

  • 我投票结束这个问题,因为它是关于如何在没有可重现示例的情况下使用 R。

标签: r time-series dataframe


【解决方案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

这给了我:

日期价格 1 2 0.9678839 2 7 0.1256203 6 8 -0.7526655

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

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 2020-04-10
    • 2019-02-27
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    相关资源
    最近更新 更多