我是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
我想将第一列保留为日期格式,而不是数字,但是该怎么做?
答案 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)