为什么将as.Date()应用于" general"格式化的excel变量无法正常工作?

时间:2016-05-05 10:19:40

标签: r excel as.date

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

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

我很好奇为什么将命令as.Date()应用于" general"格式化的日期值(来自Excel)无法在R中工作?它给了我一系列NA值。如果我已将Date.Sold变量格式化为" date"在读入R之前在Excel中,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")

2 个答案:

答案 0 :(得分:1)

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

例如,如果你的角色表示日期如下所示" 02/08/2014"然后你需要转换格式="%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")

答案 1 :(得分:0)

您必须在Excel中提供日期来源年份:" 1899-12-30"所以你的函数应该看起来像as.Date(date, origin = "1899-12-30")

致以最诚挚的问候,