Преобразование нескольких столбцов в кадре данных R в формат даты

У меня есть большой файл данных, в котором все даты загружены как символы. Я хотел бы изменить все столбцы «Даты» на формат даты. Большинство дат имеют формат "%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")

и т. д., но очень плохое кодирование.

Я попробовал следующий код, но он не работает. Это предполагает, что все даты имеют формат "%y%m%d". Использование grep ("ДАТА", имена (df)) получит все столбцы дат

df[ , grep("DATE", names(df))] <- as.Date(df[ , grep("DATE", names(df))], "%y%m%d")

person user3482393    schedule 31.03.2014    source источник


Ответы (1)


Пытаться:

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"
person Robert Krzyzanowski    schedule 31.03.2014
comment
По какой-то причине решение не работает с sapply. Ты знаешь почему? - person SavedByJESUS; 28.04.2017