Как улучшить эту функцию для преобразования столбцов в типы дат над списком фреймов данных - PullRequest
0 голосов
/ 18 июня 2020

У меня есть список фреймов данных. У меня сейчас есть функция - она ​​ограничена. Он работает, вводя в этот список фреймы данных, которые имеют определенное имя столбца - и преобразует этот столбец в тип даты.

Ограничения:

  • Вы должны определить столбцы, которые вы знаете иметь этот столбец - если вы включите фрейм данных, который не включает этот столбец, это вызовет ошибку. Было бы хорошо, если бы он мог работать со всеми фреймами данных в списке - даже если они не включают указанный столбец
  • В настоящее время требуется одно имя столбца, однако фрейм данных может содержать другие столбцы, которые могут быть преобразованы в даты. Было бы хорошо, если бы функция принимала несколько входных имен столбцов.

Вот моя функция в настоящее время:

repair_dates3 <- function(data, df_list, col_name) {
  lapply(df_list, function(x) {
    data[[x]][[col_name]] <<- as.Date(data[[x]][[col_name]], format = "%Y-%m-%d")
  })
  return(data)
}

Вы называете ее так: *

Есть идеи, как я могу это улучшить?

Большое спасибо

1 Ответ

1 голос
/ 18 июня 2020

Следующее проще и гибче. Он позволяет определять и обрабатывать вектор фреймов данных и вектор имен столбцов.
Непроверено, поскольку нет набора данных в качестве примера. вопрос, чтобы определить функцию, которая заботится о внешнем вызове lapply. Это вызовет внутреннюю частную функцию f.

repair_dates4 <- function(x, which_dfs, col_names, format = "%Y-%m-%d") {
  f <- function(x, d, format = "%Y-%m-%d"){
    x[d] <- lapply(x[d], as.Date, format = format)
    x
  }
  x[which_dfs] <- lapply(x[which_dfs], f, col_names, format = format)
  x
}

data <- repair_date4(data, df_list, cols)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...