将简单的R数据帧导出到txt tsv或csv

时间:2016-03-19 17:23:41

标签: r

我正在尝试做一些显而易见的事情,但无法解决它。从Web下载的R中的数据帧如下所示,我需要保存数据。以下是我的下载方式:

library(tseries)
library(zoo)
ts <- get.hist.quote(instrument="DJIA", 
                     start="2008-07-01", end="2017-03-05", 
                     quote="Close", provider="yahoo", origin="1970-01-01",
                     compression="d", retclass="zoo")

然后,返回对象&#34; ts&#34;有两列表;第一个日期(没有标题为R首选),另一个日期为&#34;关闭&#34; DJIA的价值

            > ts
                  Close
    2008-07-01 11382.26
    2008-07-02 11215.51
    2008-07-03 11288.53
    2008-07-07 11231.96
    .
    .
    .
    2016-03-03 16943.90
    2016-03-04 17006.77 

我需要以txt或类似格式导出的数据并稍后导入列表; (因为我会尝试处理健康信息,没有互联网访问权限)但是当我尝试保存它时;缺少没有标题的日期列。另外一行&#34;行数#34;列已添加。如果问题很明显但没有其他选择可以解决,我会道歉

2 个答案:

答案 0 :(得分:1)

日期列没有标题,因为日期是作为rownames / index导入的。 write.csv的默认值为row.names = FALSE。尝试:

write.csv(ts, file = "ts.csv",row.names=TRUE)

修改
扼杀,这不适用于class "zoo"

的对象

根据? write.table

  

write.table打印所需的参数x(将其转换为   数据帧(如果它不是文件或连接中的一个或矩阵)。

显然这种转换以某种方式失败了。但是,这有效:
write.csv(data.frame(ts), file = "ts.csv",row.names=TRUE)

答案 1 :(得分:0)

ts对象是一个zoo对象(不是两列表)。在这种情况下,zoo对象在内部由一列数据矩阵和一个包含日期的"index"属性表示。

1)保存/加载如果您想要对输出文件做的唯一事情是稍后将其读回R,则没有理由要求文本,任何格式都可以。特别是你可以这样做:

save(ts, file = "ts.Rda")

现在在以后的会议中:

library(zoo)
load("ts.Rda")

1a)这也可以生成一个R源文件,当sourced重建zoo对象时:

dump("ts", "ts.R")

以及后来的会议:

library(zoo)
source("ts.R")

2)write.zoo / read.zoo 这将提供一个文本文件:

write.zoo(ts, "ts.dat")

可以使用以下方法将其写回另一个会话:

library(zoo)
ts <- cbind( read.zoo("ts.dat", header = TRUE) )