将R数据帧中的多个列转换为日期格式

时间:2014-03-31 21:36:35

标签: r date-format

我有一个大型数据文件,其中所有日期都已加载为字符。我想将所有日期列更改为日期格式。大多数日期都有"%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")

1 个答案:

答案 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"