1

我是 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

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

4

3 回答 3

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
于 2019-05-12T04:01:37.030 回答
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)
于 2019-05-11T13:54:38.990 回答
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)
于 2019-05-11T14:42:02.637 回答