簡體   English   中英

日期為兩位數的年份

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM