【问题标题】:How to Split a XTS Data Frame by Date Index?如何按日期索引拆分 XTS 数据帧?
【发布时间】:2020-12-04 12:09:49
【问题描述】:

我通过组合各种作为 XTS 对象的技术指标创建了一个数据框。

alldata_SBI <- data.frame(Ad(SBIN.NS),SMA50_SBI,SMA200_SBI,EMA50_SBI,EMA200_SBI,BB_SBI,
                          Momentum_SBI,MACD_SBI,RSI_SBI, ROC_SBI, WPR_SBI)
colnames(alldata_SBI) <- c("ADJ.CLOSE","SMA50","SMA200","EMA50","EMA200","BB.DN","BB.MAVG","BB.UP","BB.PCTB",
                           "MOMENTUM","MACD","MACD.SIGNAL","RSI","ROC", "WPR")

我看到数据框有一个日期索引。

Data Frame Output

我注意到这个日期索引是自动创建的,可能是因为我结合了 XTS 对象,所以索引会出现。

现在,我想将此数据框拆分为 2 个不同的训练和测试集,如下所示

火车

测试

我怎样才能做到这一点?

【问题讨论】:

    标签: r date time split xts


    【解决方案1】:

    如果您将数据留在 xts 对象而不是 data.frame 中,这会容易得多。

    假设您的数据仍在 xts 对象中:

    alldata_sbi <- merge(Ad(SBIN.NS),SMA50_SBI,SMA200_SBI,EMA50_SBI,EMA200_SBI,BB_SBI,
                         Momentum_SBI,MACD_SBI,RSI_SBI, ROC_SBI, WPR_SBI)
    
    train <- alldata_sbi["2015-01-01/2018-12-31"]
    test <- alldata_sbi["2019-01-01/2019-12-31"]
    
    # alternatively, you only need to specify the smallest period you need
    train <- alldata_sbi["2015/2018"]  # all obs in 2015-2018
    test <- alldata_sbi["2019"]        # all obs in 2019
    

    现在您可以根据需要将traintest 转换为data.frames。

    【讨论】:

    • @HarveySpecter 很高兴为您提供帮助。另请注意,as.data.frame(xts) 创建的 data.frame 没有像 xts 对象那样的“索引”。您看到的是 data.frame 上的行名。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多