如果我将日期10.10.61
(DD.MM.YY)与as.Date(date, format="%d.%m.%y")
转换为某种原因,则会将其转换为 2061 -10-10
是否有一种优雅的方法来纠正这个问题,或者我必须通过切割字符串并添加" 19"来手动完成。在前面?
我还尝试了 zoo 包,这会导致相同(错误)的结果。
答案 0 :(得分:4)
x = format(as.Date("10.10.61", "%d.%m.%y"), "19%y-%m-%d")
x = as.Date(x)
x
class(x)
答案 1 :(得分:1)
请注意,单个sub
会对字符串进行切片并将年份前置为19,因此不会太繁重:
as.Date(sub("(..)$", "19\\1", date), "%d.%m.%Y")
## [1] "1961-10-10"
chron 或者,chron包的默认值为30,因此默认情况下它将使用1961:
library(chron)
as.Date(dates(date, format = "d.m.y"))
## [1] "1961-10-10"
在chron中,年度扩展规则由"chron.year.expand"
选项定义,默认设置为year.expand
功能,该功能的默认cut.off
为30。 SO帖子了解更多信息:
Add correct century to dates with year provided as "Year without century", %y
答案 2 :(得分:0)
如果您的所有日期都在20世纪,那么您可以使用此解决方案:
library(magrittr)
your_date = '10.10.61'
as.Date(your_date,format="%d.%m.%y") %>% format("19%y%m%d") %>% as.Date("%Y%m%d")