如何在R中将隐藏的列打印到CSV文件

时间:2019-05-11 13:30:58

标签: r

我是R的新手,使用其他脚本。我想将数据帧保存到csv文件中。应该有三列。

print(resultData)
                Name A        Name B
1995-06-07      9.866522e+00  2.717378e+00
1995-06-08      9.867985e+00  2.715913e+00
1995-06-09      9.859632e+00  2.707559e+00

当我做write.csv()

write.csv(resultData, file="log.txt", row.names=TRUE)

"","Name A","Name B"
"10902",9.86301036126783,2.68187056180675
"10903",9.86184368463656,2.68303587888967
"10904",9.85092788914247,2.69383380526988

我想将第一列保留为日期格式,而不是数字,但是该怎么做?

3 个答案:

答案 0 :(得分:2)

您的对象是xts对象,因此请使用write.zoo而不是write.csv来编写它。如果x是您的对象,则:

library(xts)

# write.zoo(x, "myfile.dat")
write.zoo(x, stdout())
## "Index" "Name A" "Name B"
## "1952-01-04" 0.00167228338845363 0.00167228338845363
## "1952-01-07" 0.00125404832816473 0.00125404832816473
## "1952-01-08" -0.00252429818470144 -0.00252429818470144
## "1952-01-09" -0.00589414448984377 -0.00589414448984377
## "1952-01-10" -0.000864743756013115 -0.000864743756013115
## "1952-01-11" 0.00413940559567309 0.00413940559567309

答案 1 :(得分:1)

您的日期似乎被存储为自August 30th 1965以来的天数。 由于CSV文件只是逗号和文本,因此“正确”的格式取决于您要对CSV文件执行的操作。

如果您想要一个易于理解的日期字符串,请尝试使用基本R函数as.Date

> as.Date(10902, origin = "1965-08-30")
[1] "1995-07-06"

重排第一列的操作可以像这样:

resultData[,1] = as.Date(resultData[,1], origin = "1965-08-03")
colnames(resultData)[1] = "Date" #Adding column name to make beautiful
write.csv(resultData, file="log.txt", row.names=TRUE)

答案 2 :(得分:1)

您有一个zoo对象

class(resultData)
#[1] "xts" "zoo"

没有行名

rownames(resultData)
#NULL

将它们转换为data.frame,然后使用write.csv

write.csv(data.frame(resultData), file="log.txt")

或者如果您想将date作为单独的列

write.csv(cbind(date = index(resultData), data.frame(resultData)), 
          file="log.txt", row.names = FALSE)