[英]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 年(含)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.