我有一个大型数据文件,其中所有日期都已加载为字符。我想将所有日期列更改为日期格式。大多数日期都有"%y%m%d"格式,有些有"%Y%m%d"格式。有25列日期,因此单独更改每一列是低效的。
我能做到
df$DATE1 <- as.Date(df$DATE1, format ="%y%m%d")
df$DATE2 <- as.Date(df$DATE2, format ="%y%m%d")
等,但编码很糟糕。
我尝试了以下代码,但是无法正常工作。这假设所有日期的格式为&#34;%y%m%d&#34;。使用grep(&#34; DATE&#34;,名称(df))将获得所有日期列
df[ , grep("DATE", names(df))] <- as.Date(df[ , grep("DATE", names(df))], "%y%m%d")
答案 0 :(得分:8)
尝试:
df[, cols <- grep("^DATE", names(df))] <- lapply(df[, cols <- grep("^DATE", names(df))], as.Date, format = "%y%m%d")
示例:
df <- data.frame(DATE1 = c('910812', '900928'), DATE2 = c('890813', '890910'))
# Apply the above and you get:
# > df
# DATE1 DATE2
# 1 1991-08-12 1989-08-13
# 2 1990-09-28 1989-09-10
# > class(df[, 1])
# [1] "Date"