簡體   English   中英

將字符格式轉換為 r lubridate 中的日期格式,領先年份 20 而不是 19

[英]convert character format to date format in r lubridate, leading year 20 not 19

我需要使用 lubridate 將 Marriage 內置數據集中列 dob 的 fctr 格式(例如 4/11/64)轉換為日期格式。 我嘗試了很多函數,strptime,as_date等,但是4/11/64變成了2064年,這對於1964年出生的人來說是不正確的。有沒有自動將年份轉換為19xx的函數? 或者我必須在轉換之前先將前導“19”放在字符格式中?

我認為您必須自己添加“19”,除非您想使用hydrostats::four.digit.year

hydrostats::four.digit.year(dmy("4/11/64"), year=1900)

(該函數只有幾行長,所以如果你不想依賴包,你可以復制它)

function (x, year = 1968)  {
    n <- as.numeric(strftime(x, format = "%y"))%%100
    Y <- ifelse(n > year%%100, 1900 + n, 2000 + n)
    return(Y)
}

否則,你就會被 POSIX 標准所困擾。 "%y"是用於轉換?strptime (或一位)數字年份的標准標簽,來自?strptime

'%y' 沒有世紀的年份 (00-99)。 在輸入時,值 00 到 68 以 20 為前綴,69 到 99 以 19 為前綴——這是 2018 POSIX 標准指定的行為,但它也說“預計在未來的版本中,默認世紀是從 2 -數字年份會改變'。

標准本身可在此處獲得

如果未指定世紀,則 [69,99] 范圍內的值應指 1969 年至 1999 年(含),[00,68] 范圍內的值應指 2000 年至 2068 年(含)。

另請參閱: 為什么 69 的兩位數年份的 strptime 在 python 中返回 1969?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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