如何在R中用write.table导出带日期行名的CSV文件?
解决xts对象导出CSV时显示日期而非数字行号的方法
嗨,这个问题我之前处理过好几次啦!xts对象的日期其实存在它的索引属性里,直接用write.table的话,默认只会导出数值部分,行号用递增数字填充。给你几个简单好用的解决办法:
方法1:用xts专属的write.zoo函数(最推荐)
因为xts是继承自zoo包的时序对象,write.zoo专门为这类对象设计,默认就会把日期索引作为第一列导出,用法和write.table几乎一致:
write.zoo(myresult, "myresult.csv", sep = ",")
导出后的CSV第一列就是你需要的日期,不用额外处理,省心又靠谱。
方法2:转成数据框后再导出
如果更习惯用write.table,可以先把xts对象转换成带日期列的数据框,再导出:
# 提取日期索引作为第一列,再组合数值部分成数据框 result_df <- data.frame(Date = index(myresult), coredata(myresult)) # 导出时关闭默认的数字行号 write.table(result_df, "myresult.csv", sep = ",", row.names = FALSE)
这里index(myresult)能精准拿到xts的日期索引,coredata(myresult)则提取出对象里的数值内容,组合后导出就不会有多余的数字行号啦。
方法3:直接指定行名为日期(需补列名)
这个方法可以直接用write.table的row.names参数,但导出后第一列会没有列名,需要手动补充:
write.table(myresult, "myresult.csv", sep = ",", row.names = index(myresult))
如果用这个方法,记得打开CSV后给第一列加上类似“Date”的列名哦。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

