我有专栏x
,它有两种不同的日期格式12/31/1998
和12/--/98
。如您所见,第二种格式date
缺失,year
为2位数。
我需要从列中的所有日期中提取year
。因此,当我使用Year<- data.frame(format(df$x, "%Y"))
时,它会返回year
作为第一种格式。对于第二种格式,它返回NA
。
我将非常感谢所有的帮助。感谢。
答案 0 :(得分:3)
您可以获得一些创意,并为丢失的数据指定一种丑陋的格式,然后保留一个有效的响应:
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"
答案 1 :(得分:2)
如果它们都是年份是“/”之后的最后一个数字的格式,则可以使用basename
。那么你只需要将2个字符的年份转换为4年的格式:
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年以前的日期。