在R中基于日期将xts时间序列对象拆分为每日数据列表的实现方法
R语言xts时间序列按日期拆分为单日列表的实现方法
你可以直接使用xts包内置的拆分功能实现需求,完整操作代码如下:
library(xts) # 先将题目中给出的xts对象赋值到变量,实际使用时替换为你自己的xts变量名即可 ts_data <- structure(c(-0.108511, -0.446626999999999, 0.240643000000002, 1.679788, -2.278705, 0.0174959999999977, -0.23011, -1.458079, -0.770809, -0.160931000000001, -0.884409000000002, -0.127797999999999, 0.231928, -0.125263, -0.188977999999999, -0.343629999999997, -0.333669, 0.168738999999999, 1.249041, -1.41732, 0.0101289999999992, -0.434269, -1.328651, -0.810048999999999, -0.0380099999999999, 0.0380099999999999, 0, 0, -0.0821299999999994, 0.0821299999999994, -0.0905709999999971, -0.626428000000001, 0.3538, 2.56579, -2.109532, 0.0253410000000009, -0.243471, -1.732849, -0.921948999999998, -0.354142, -1.454579, 0.0786300000000004, 1.08839, -0.248750999999999, -0.975019000000001, -0.022001000000003, -0.474670999999997, 0.16667, 1.165852, -4.200741, 0.0207899999999981, 0.0436310000000013, -1.246241, -0.48298, -0.0585299999999993, -2.37666, -0.73001, 0.898570000000001, -0.295430000000001, -0.59243, -0.0217520000000029, -0.449507999999998, 0.164778999999999, 1.750981, -1.99885, 0.0310400000000008, -0.249700999999998, -1.548811, -0.839808999999999, -0.35397, -0.703519, 0.0034099999999988, -0.743641, 0, 0.602879999999999 ), class = c("xts", "zoo"), index = structure(c(1246490100, 1246490400, 1246490700, 1246491000, 1246491300, 1246491600, 1246491900, 1246492200, 1246492800, 1246493100, 1246493400, 1246493700, 1246494000, 1246494300, 1246494600), tzone = "UTC", tclass = c("POSIXct", "POSIXt")), .Dim = c(15L, 5L), .Dimnames = list(NULL, c("rrp_nsw", "rrp_qld", "rrp_sa", "rrp_tas", "rrp_vic"))) # 按天拆分xts对象为列表 Mylist <- split(ts_data, f = "days") # 调整列表名称为YYYY-MM-DD格式,匹配你需要的调用方式 names(Mylist) <- as.character(unique(as.Date(index(ts_data), tz = "UTC")))
运行上述代码后,直接调用Mylist[["2009-07-01"]]、Mylist[["2009-07-02"]]即可得到你示例中的输出结果。拆分后的每个列表元素仍然是xts类型,保留了原始的时间索引和列名,不影响后续的时间序列操作。
内容的提问来源于stack exchange,提问作者Eve Chanatasig
相关产品推荐
相关产品推荐

