我有一个.csv文件,每个字段分别是日期时间、日期和时间。 原本它们都是字符型字段,我已经相应地进行了转换。 在我的代码末尾,如果我执行以下操作:
str(data)
我将获得
datetime: POSIXct
date: Date
time: Class 'times' atomic [1:2820392] (....) attr(*, "format")= chr "h:m:s"
现在,我对此感到非常满意,并希望创建一个 .csv 文件,这是我的代码:
write.csv(data, file = "data.csv", row.names = FALSE)
我也尝试过
write.table(data, "data.csv", sep = ",", row.names = FALSE)
我使用两种方法都得到了相同的结果,即当编写新的 .csv 文件时,我的所有转换都会丢失:一切都变回字符。我怀疑在 write 函数中缺少某些参数,但我已经搜索了整个下午,仍然找不到答案。请问有人可以帮忙吗?
dplyr
和lubridate
,您可以使用以下一行代码生成具有ISO8601日期格式(以便不会丢失任何信息)的CSV文件:write.csv(mutate(data, time=format(time, "%FT%H:%M:%S%z")), file="test.csv", row.names=FALSE)
。您可以使用以下代码从该文件恢复数据框:df2 <- read.csv("test.csv") %>% mutate(time=ymd_hms(time))
。请注意,此代码不改变原始意义,只是使内容更加通俗易懂。 - RubenLagunadplyr
和lubridate
的话,代码将会是data$time = format(data$time,format="%FT%H:%M:%S%z"); write.csv(data,"time.csv",row.names=FALSE)
。 - bonna