繁体   English   中英

如何将数据框转换为xts

[英]How to convert data frame to xts

我有一个包含日期和数据的大型数据框。 在每个奇数列中,我都有日期,每隔一列有相应的股票价格。 我想将每一列对转换为单独的 xts object。 数据框如下所示:

...1        Stock Price
2021-11-09    72.5
2021-11-10    73.4
2021-11-15    72.9
etc           etc

当我调用以下行时,它工作正常: xts(df[,2],order.by=df$...1)但是我想在循环中使用它,所以我宁愿使用xts(df[,2],order.by=df[,1]) ,但这会导致错误。 order.by 需要一个适当的基于时间的 object。 当我尝试这个时: xts(df[,2],order.by=as.Date(df[,1]))它弹出不知道如何将“x”转换为 class“日期”。 我不明白,因为最初的第一列是 posixct 格式。 有人可以建议我一个解决方案吗? 谢谢

lapply ,您可以将 0 和 2 添加到索引中,以遍历两个初始数据。 给出两个时间序列的列表。

lapply(c(0, 2), \(i) xts::xts(df[, 2 + i], order.by=df[, 1 + i]))
# [[1]]
# [,1]
# 1995-01-16 1.7299
# 1995-01-16 1.7299
# 1995-01-16 1.7299
# 
# [[2]]
# [,1]
# 1995-01-16 4.3911
# 1995-01-16 4.3911
# 1995-01-16 4.3911

数据

df <- structure(list(...1 = structure(c(790214400, 790214400, 790214400
), tzone = "UTC", class = c("POSIXct", "POSIXt")), `BF/B UN Equity` = c(1.7299, 
1.7299, 1.7299), ...3 = structure(c(790214400, 790214400, 790214400
), tzone = "UTC", class = c("POSIXct", "POSIXt")), `UN UN Equity` = c(4.3911, 
4.3911, 4.3911)), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM