R中的write.csv正在将我的日期转换为10位整数

R中的write.csv正在将我的日期转换为10位整数,r,csv,date,export-to-csv,date-conversion,R,Csv,Date,Export To Csv,Date Conversion,在Excel中,我创建了一个1000行的年终日期列,其中每个单元格的内容都是2018年12月31日。我在Excel中将其格式化为日期。我把这些都放到了R中,对其他列(而不是日期列)进行了一些数据操作,并使用write.csv导出了最终的数据帧。当我打开最后一个文件(Excel或Tableau)时,我的整个年终日期列在每个单元格中显示为1546214400 为什么会这样?我如何解决它 谢谢 每个软件程序都将日期(或日期时间)存储为一个数字,但会以人类熟悉的日期格式显示该数字 当您将数据读入R时,您

在Excel中,我创建了一个1000行的年终日期列,其中每个单元格的内容都是2018年12月31日。我在Excel中将其格式化为日期。我把这些都放到了R中,对其他列(而不是日期列)进行了一些数据操作,并使用write.csv导出了最终的数据帧。当我打开最后一个文件(Excel或Tableau)时,我的整个年终日期列在每个单元格中显示为1546214400

为什么会这样?我如何解决它

谢谢

每个软件程序都将日期(或日期时间)存储为一个数字,但会以人类熟悉的日期格式显示该数字

当您将数据读入R时,您使用的任何函数都“足够聪明”,可以知道“2018年12月31日”是日期“2018年12月31日”,而不是一串字符“1,2,/,3,…”都粘贴在一起。R存储日期的一种方式是作为POSIXct对象。我们可以看到R将日期“12/31/2018”存储为POSIXct整数1546214400:

as.integer(as.POSIXct(as.Date("2018/12/31")))
> 1546214400
要使用
write.csv()
以Excel熟悉的方式导出数据,首先需要使用日期格式格式化POSIXct值1546214400。因此,如果您的数据位于名为
mydf
的数据框中,并且日期列名为
date
,请执行以下操作:

mydf$date <- format(mydf$date, "%m/%d/%Y")
write.csv(mydf, file="path/to/file.csv")

mydf$date如果传入列类型,则可以控制列格式。
\


coltypes查看posixct函数和origin参数。
coltypes <- cols( col1 = col_double(), col2 = col_double(), col3 = col_date(format ="%Y%m%d"), col4 = col_double())
myData <- readr::read_csv("myCSV.csv", col_types = coltypes)