为什么在 "general" 格式的 excel 变量上应用 as.Date() 不起作用?

Why applying as.Date() on "general" formatted excel variables can't work?

我正在将 .csv 文件读入 R,其中 .csv 文件最初以 Excel 格式保存。

在准备 .csv 文件时,我复制并粘贴了新电子表格中的内容,Date.Sold 变量在 Excel 中被格式化为 "general"。

我很好奇为什么在 "general" 格式的日期值(来自 Excel)上应用命令 as.Date() 不能在 R 中工作?它给了我一系列的 NA 值。如果我在读入 R 之前将 Date.Sold 变量格式化为 Excel 中的 "date",则 as.Date() 命令可以正常工作。为什么会这样?有没有办法将这些 "general" 格式的变量读入 R 中的正确日期?

关于我的变量和我使用的命令的一些信息:

 Str(Date.Sold):  $ Date.Sold : Factor w/ 789 levels "-","40965.00",..: 461 463 456 17

我使用的命令:

A$Date = as.Date(A$Date.Sold, "%d/%m/%Y")

您必须在 Excel: "1899-12-30" 中给出日期的起源年份,这样您的函数应该类似于 as.Date(date, origin = "1899-12-30").

此致,

我认为您可能误解了 as.Date() 函数: 您始终必须指定当前要转换的日期的格式。

例如,如果您的字符表示日期类似于“02/08/2014”,那么您需要将其转换为 format="%d/%m/%Y":

as.Date("02/08/2014",format="%d/%m/%Y")

如果您的日期是通用 excel 格式,则需要使用 origin 参数。例如:

as.Date(30829, origin = "1899-12-30")

在你的情况下,你可能需要先进行类型转换,因为你有以下因素:

as.Date(as.integer(as.character(30829)), origin = "1899-12-30")