Я пытаюсь объединить все CSV-файлы в папке, и у меня есть несколько разные версии некоторых выдержек. По какой-то причине тонкие изменения в именах столбцов, кажется, были сделаны. Каков наилучший способ взять на себя задачу сопоставления и объединения данных из этих столбцов?
Я попытался использовать приведенный ниже код, после изучения этого ответа: Как импортировать несколько файлов .csv одновременно?
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., col_types = cols(.default = "c")))
Получившийся tbl
имеет гораздо больше столбцов, чем любой из исходных файлов, виновником является то, что у меня есть столбцы с именами, как показано в tbl
после слияния csvs:

У меня впереди многие из этих слияний, и я заметил, что различия в именах столбцов не всегда проявляются в одной и той же форме (т. Е. Иногда проблема заключается в «/» или каком-либо другом символе).
Могу ли я ожидать внесения этих исправлений вручную или есть способ реализовать некоторый код для сопоставления столбцов? Я думаю, что нечеткое сопоставление будет трудным, учитывая тот факт, что «Адрес электронной почты типа 2» следует объединять только с «Email.Address.Type.2», а не с «адресом электронной почты-2» и т. Д.
Есть ли способ изменить код, чтобы убрать все пробелы или знаки пунктуации из заголовков столбцов? Это решило бы мою проблему, потому что, похоже, единственными проблемами являются символы, отличные от букв и цифр.
Моя попытка удалить специальные символы до сих пор не удалась с кодом ниже. Моя идея заключалась в том, чтобы попытаться удалить символы в строках имен столбцов в операторе map_df
.
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., col_names = gsub("[^[:alnum:] ]", "", .),trim_ws=TRUE,
col_types = cols(.default = "c")))
Еще одна попытка ниже, и я получаю сообщение об ошибке
tbl <-
list.files(path = "//folder/anotherfolder/",
pattern = "*.csv",
full.names = T) %>%
map_df(~read_csv(., {colnames<-c(gsub("[^[:alnum:] ]", "", x=names(.)))},
col_names = colnames,
col_types = cols(.default = "c")))
Полученное сообщение об ошибке гласит:
Ошибка: оператор $ недопустим для атомарных векторов
Заранее благодарим за любую помощь, которую вы можете оказать!