簡體   English   中英

從兩種不同的日期格式中提取年份

[英]Extracting year from two different date format

我有說x列,它具有兩種不同的日期格式12/31/199812/--/98 如您所見,在第二種格式中, date缺失, year以2位數字表示。

我需要從列中的所有日期中提取year 因此,當我使用Year<- data.frame(format(df$x, "%Y"))它返回第一種格式的year 對於第二種格式,它將返回NA

我將不勝感激。 謝謝。

您可能會有點創意,並為丟失的數據指定丑陋的格式,然后保留有效的響應之一:

vals <- c("12/31/1998", "12/--/98")
out <- pmax(
         as.Date(vals, "%m/%d/%Y"),
         as.Date(paste0("01",vals), "%d%m/--/%y"),
         na.rm=TRUE
       )
format(out, "%Y")
#[1] "1998" "1998"

如果它們全部采用格式,其中年份是“ /”后的最后一個數字,則可以使用basename 然后,您只需要將2個字符的年份轉換為四年格式即可:

vals <- c("12/31/1998", "12/--/98", "68", "69")
yrs <- basename(vals)
yrs <- ifelse(nchar(yrs) == 2, format(as.Date(yrs, format = "%y"), "%Y"), yrs)
yrs
# [1] "1998" "1998" "2068" "1969"

問題是它不適用於早於1969年的日期。

暫無
暫無

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

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