Как я могу объединить разреженные столбцы в славе данных?

У меня есть скрипт R, который создает фрейм данных с 61 столбцом. Data.frame создается путем чтения группы файлов csv в список data.frames, а затем слияния списка таким образом, что столбцы с общим именем в каждом data.frame в списке заполняют один и тот же столбец в результирующем data.frame.

Некоторые из столбцов, которые должны быть объединены, были непоследовательно названы в CSV-файлах (например, date.received vs receive.on.date vs date.sample.received), и мне было интересно, каков будет лучший подход к их объединению.

У меня была пара идей:

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

Возможен ли второй подход (и как?) или есть лучший способ?

1 ответ

Решение

Второй подход возможен, и он легко rbind_all от dplyr пакет. Вот как:

Прежде всего, если у вас есть некоторая информация о шаблоне имен столбцов, которые должны быть собраны вместе, я предлагаю вам попытаться исправить это перед укладкой, например:

colnames_synonymous <- c("date.received", "received.on.date", "date.sample.received")

list_of_dfs <- lapply(list_of_dfs, function(df) {
  names(df)[names(df) %in% colnames_synonymous] <- "date_received"
  return(df)
})

Теперь вы готовы идти

dplyr::rbind_all(list_of_dfs)

Возможно, вам придется внести некоторые коррективы, прежде чем все столбцы будут правильно сложены, но теперь все, что вам нужно сделать, - это изменить функцию lapply. Я считаю этот способ проще, чем сделать некоторые преобразования столбцов после rbinding.

Другие вопросы по тегам