我正在使用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
有人可以帮助解决这个问题......我认为这是我正在做的事情。如果您需要更多信息,请与我们联系。
答案 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才能使用它们。