如何将quantmod::getSymbols输出的数据框行名设置为日期?
解决quantmod::getSymbols数据的日期行名问题
嘿,咱们先把问题本质说清楚:你遇到的差异是因为quantmod::getSymbols()默认返回的是xts/zoo类型的时间序列对象,这类对象的日期信息存在专属的index()属性里,不是传统data.frame的行名;而coindeskr::get_historic_price()返回的是普通data.frame,所以直接把日期设成了行名。下面给你两种简单的方法实现需求:
方法1:用fortify.zoo()一键转换
fortify.zoo()是专门用来把zoo/xts对象转成带日期索引的data.frame的工具,非常方便:
library(quantmod) getSymbols("AAPL") # 转换为data.frame,自动生成Index列存日期 AAPL_df <- fortify.zoo(AAPL) # 将Index列设为行名,然后删掉该列(可选,看你需求) row.names(AAPL_df) <- AAPL_df$Index AAPL_df$Index <- NULL # 验证一下 row.names(head(Cl(AAPL_df)))
方法2:手动提取索引设置行名
如果你想更灵活控制转换过程,可以手动把xts对象转成data.frame,再把索引赋值给行名:
# 先转成普通data.frame AAPL_data <- as.data.frame(AAPL) # 提取xts对象的索引作为行名 row.names(AAPL_data) <- index(AAPL) # 查看结果 head(row.names(Cl(AAPL_data)))
额外小提示
如果只是需要查看或使用日期数据,其实不用非要转成data.frame——直接用index(AAPL)就能获取完整的日期序列,这是xts/zoo对象的标准操作方式哦~
内容的提问来源于stack exchange,提问作者rloop
相关产品推荐
相关产品推荐

