You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R写入CSV文件时丢失日期列的问题求助

解决雅虎股票数据保存CSV时日期列丢失的问题

问题原因

getSymbols返回的是xts/zoo格式对象,日期信息存储在行索引中而非普通数据列。直接用as.data.frame()转换时,行索引不会自动转为数据框的列,导致写入CSV后日期丢失。另外你代码里的na.fill(ftse, "extend")没有重新赋值给ftse,这一步填充缺失值的操作实际未生效。

解决方法

方法一:用tidyverse工具将行索引转为日期列

修改代码,在转换数据框时把行索引提取为单独的date列:

library(tidyverse)
library(forecast)
library(xts)  # 确保加载xts包,getSymbols依赖它

# 下载数据并填充缺失值(注意重新赋值给ftse)
ftse <- getSymbols('^FTSE', auto.assign=FALSE, from = '2013-01-01', src= 'yahoo')
ftse <- na.fill(ftse, "extend")

# 转换为数据框,并将行索引转为date列
ftse_df <- ftse %>% 
  as.data.frame() %>% 
  rownames_to_column(var = "date")

# 修改列名(现在包含date列)
colnames(ftse_df) <- c("date", "open", "high", "low", "close", "volume", "adjusted")

# 写入CSV
write_csv(ftse_df, "C:/Users/xxx/ftse.csv")

方法二:直接用xts的write.zoo函数保存

xts提供了write.zoo函数,可直接将带索引的对象写入CSV,自动保留日期列:

library(tidyverse)
library(forecast)
library(xts)

ftse <- getSymbols('^FTSE', auto.assign=FALSE, from = '2013-01-01', src= 'yahoo')
ftse <- na.fill(ftse, "extend")

# 直接写入CSV,指定列名(第一列为date)
write.zoo(ftse, 
          file = "C:/Users/xxx/ftse.csv", 
          sep = ",", 
          col.names = c("date", "open", "high", "low", "close", "volume", "adjusted"))

验证结果

打开生成的CSV文件,第一列会显示对应的交易日期,其他行情数据也能正常保留。

内容的提问来源于stack exchange,提问作者Kevin A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:11