我正在使用“January131973”格式的出生日期列表。要从此字符串中获取日期,我使用mdy
库中的lubridate
函数。奇怪的是,代码仅在1月份的日期返回NA,但在其他月份工作正常,如下所示
> mdy("January131973")
[1] NA
Warning message:
All formats failed to parse. No formats found.
> mdy("April241973")
[1] "1973-04-24"
数据涵盖所有月份和日期,以及从1971年到1990年的年份。但错误仅发生在1月份的日期。我已经解决了输入字符串以获得“13January1973”并继续使用dmy
函数,这解决了手头的问题。 (ymd
也完美无缺。)
但是,如果可以证实我没有忽略任何潜在的冲突等,那么下次会有所帮助,也可以帮助识别其他地方看不见的问题。
这是我尝试检查不同组合的测试代码
library(tidyr)
library(lubridate)
x <- data.frame(mmm=month.name, dd=c(15:26), yyyy=c(1973:1984))
x_mdy <- unite(x, test, mmm,dd,yyyy, sep = "",remove = FALSE)
lapply(x_mdy$test, mdy)
x_dmy <- unite(x, test, dd,mmm,yyyy, sep = "", remove = FALSE)
lapply(x_dmy$test, dmy)
x_ymd <- unite(x, test, yyyy,mmm,dd, sep = "", remove = FALSE)
lapply(x_ymd$test, ymd)
运行上述代码后,我只在将mdy
与“1月”一起使用时遇到了问题。另请注意,月份名称的缩写形式也会在上面的df创建中给出相同的错误(mmm=month.abb
。)
对此行为的任何澄清表示赞赏。