[英]as.Date with two-digit years
如果出於某種原因將日期10.10.61
(DD.MM.YY)轉換為as.Date(date, format="%d.%m.%y")
,則會將其轉換為2061 -10-10 。
是否有一種優雅的方法可以糾正此問題,或者我必須手動將其切成薄片並在前面加上“ 19”嗎?
我還嘗試了Zoo程序包,該程序帶來了相同(錯誤)的結果。
x = format(as.Date("10.10.61", "%d.%m.%y"), "19%y-%m-%d")
x = as.Date(x)
x
class(x)
請注意,單個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。有關更多信息,請參cut.off
SO帖子: 添加正確的世紀迄今提供的年份為“無世紀年份”,%y
如果您所有的日期都在1900年代,那么您可以使用以下解決方案:
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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.