as.Date在R中失败:'字符串不符合标准明确'

时间:2018-04-27 01:53:05

标签: r excel date statistics

我正在使用R格式导入excel格式的数据。

我在数据框(isas1_3b)中有一个列LPAv1.1.1),其格式为character。导入后,日期已从格式dd / mm / yy更改为天(例如,41268)。

我试图将其转换如下:

as.Date(LPAv1.1.1$isas1_3b, origin = "1899-12-30")

但是,我收到以下错误:

  

charToDate(x)中的错误:字符串不是标准的明确格式   4.停止(“字符串不是标准的明确格式”)   3. charToDate(x)   2. as.Date.character(LPAv1.1.1 $ isas1_3b,origin =“1899-12-30”)   1. as.Date(LPAv1.1.1 $ isas1_3b,origin =“1899-12-30”)

我不确定我做错了什么。经过大量搜索后,上述转换是推荐的。

我还应该补充一点,原始excel文档中还有另外两个日期列。但他们都被读作'POSIXct''POSIXt'

可能相关的其他信息:

macOS 13.13.3 R 3.3.3 RStudio 1.1.419

有人可以帮助解决这个问题......我认为这是我正在做的事情。如果您需要更多信息,请与我们联系。

3 个答案:

答案 0 :(得分:1)

正如thelatemail正确指出的那样,带有日期信息的列必须是数字格式。

d <- 41268

as.Date(d, origin = "1899-12-30")
#[1] "2012-12-25"

在您的数据集上,这将解决它:

library(dplyr)

mutate(LPAv1.1.1, isas1_3b = as.Date(as.numeric(isas1_3b), 
                                     origin = "1899-12-30"))

答案 1 :(得分:1)

变量类在列/向量中不一致。日期,字符串和四位数字混合在一起。一旦我纠正了这些,它就按预期工作了。谢谢大家的帮助。

答案 2 :(得分:0)

你是如何从excel导入的?是否可以调整导入方法,以便按照您期望的方式导入它?

使用包&#34; xlsx&#34;从excel导入数据。为您提供了两个选项read.xlsx,它将根据该列中的数据检测/猜测类类型,或者read.xlsx2,您必须使用colClasses选项手动设置类类型。 (更多信息:http://www.sthda.com/english/wiki/r-xlsx-package-a-quick-start-guide-to-manipulate-excel-files-in-r

另一个有用的选项是XLConnect。

这两个软件包的一个可能缺点是它们依赖Java来完成导入工作,所以你必须安装Java才能使用它们。