如果我轉換日期61年10月10日(DD.MM.YY)與as.Date(date, format="%d.%m.%y")
由於某種原因,將其轉換成2061 -10-10。有沒有一個優雅的方式來糾正這個問題,還是我必須通過切分字符串並在前面添加「19」來手動執行?我也嘗試了動物園包,它帶來了相同(錯誤)的結果。as.Date兩位數年
謝謝!
如果我轉換日期61年10月10日(DD.MM.YY)與as.Date(date, format="%d.%m.%y")
由於某種原因,將其轉換成2061 -10-10。有沒有一個優雅的方式來糾正這個問題,還是我必須通過切分字符串並在前面添加「19」來手動執行?我也嘗試了動物園包,它帶來了相同(錯誤)的結果。as.Date兩位數年
謝謝!
x = format(as.Date("10.10.61", "%d.%m.%y"), "19%y-%m-%d")
x = as.Date(x)
x
class(x)
謝謝!聰明的解決方案! –
如果在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")
注意,單個sub
將切片的字符串,前面加上19年,所以它不是那麼繁重:
as.Date(sub("(..)$", "19\\1", date), "%d.%m.%Y")
## [1] "1961-10-10"
克羅恩氏或者,克羅恩氏包默認爲30截止,因此將默認使用1961:
library(chron)
as.Date(dates(date, format = "d.m.y"))
## [1] "1961-10-10"
在歷代志下一年展開規則是由默認設置爲year.expand
函數和函數的默認cut.off
是30.請參閱本SO發佈更多信息的"chron.year.expand"
選項定義: Add correct century to dates with year provided as "Year without century", %y
的理由發現在'?strptime':_「沒有世紀的年份(00-99)。在輸入時,值00到68以20和69到99乘19爲前綴 - 這是2004和2008 POSIX標準指定的行爲「_ – lukeA