Я новичок в R и не могу найти решение для поиска в Google, поэтому здесь у нас go:
У меня есть фрейм данных со многими столбцами. У двух из них есть даты в этом. Один столбец как character
, а другой как integer64
. Значения в обоих столбцах выглядят так: «201802171254». поэтому они в формате Y%m%d%H%M
. Я хочу преобразовать их в форматы даты, используя функцию. До этого я пробовал следующие две строки:
df$column_character <- as.Date(as.character(c(df$column_character)), format = '%Y%m%d%H%M')
df$column_integer64 <- as.Date(as.character(c(df$column_integer64)), format = '%Y%m%d%H%M')
Я знаю, что это не оптимально, но они работают. Я получаю форматы даты для обеих колонок. поэтому я попытался поместить код в функцию:
date_format <- function(df, col){
col_q = enquo(col)
df %>%
base::as.Date(as.character(c(!!col_q), na.rm = TRUE), format = '%Y%m%d%H%M')
}
date_format(df$column_character)
date_format(df$column_integer64)
Это работает, но только для первого столбца character
. Для столбца integer64
я получаю сообщение об ошибке:
Error in as.Date.default(., as.character(c(!!col_q), na.rm = TRUE), format = "%Y%m%d%H%M") :
do not know how to convert '.' to class “Date”
, что меня смущает, потому что если я вообще ожидал, что символьный столбец будет бороться, так как в коде у меня есть один ненужный шаг (преобразование его в символ до преобразования его в дату, но это уже символ) в нем.
где моя ошибка? почему он работает без функции, но я пытаюсь использовать его как шаблон, половина которого больше не работает?
спасибо за ваши ответы заранее