![Объедините несколько CSV-файлов по столбцам, а не по строкам](https://rvso.com/image/1604668/%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%82%D0%B5%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20CSV-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20%D0%BF%D0%BE%20%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%D0%BC%2C%20%D0%B0%20%D0%BD%D0%B5%20%D0%BF%D0%BE%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%D0%BC.png)
У меня есть ~100 CSV-файлов, которые я хочу объединить в одну таблицу Excel (все на одной вкладке, а не на отдельных вкладках). Эти CSV-файлы идентичны по формату: каждый содержит 4000 строк и 2 столбца с заголовком, размер около 60 КБ.
Все решения, которые я нашел до сих пор, добавляют следующий CSV в конец последней строки активной вкладки. Я не видел ни одного, которое может добавлять новые CSV в столбцы, расположенные непосредственно справа от последнего столбца.
Вот несколько примеров.
Метод копирования DOS: копировать *.csv merge.txt
Это решение. (Скрипт VBA.)
Использование данных Excel>Новый запрос>Из файла>Из папки (Excel 2013).
Также имеются примеры использования скриптов Windows Powershell для объединения CSV-файлов в Интернете.
Все вышеперечисленное создает одну таблицу Excel с примерно 400 000 строк данных, которая для меня бесполезна.
Буду признателен за предложения по решению этой проблемы. Спасибо!
Редактировать. Найдено простое решение: использование cbind() в r для объединения данных в фрейм данных и последующей записи их в csv. Весь процесс занял ~3 секунды. Правильный инструмент для работы!
Спасибо всем за вклад. Ура,
--tcollar
решение1
Не уверен насчет «родной» Windows 10, но если у вас установлена подсистема Windows для Linux, вы можете использовать paste
команду UNIX, которая должна объединить файлы по столбцам, как вы и просите.
решение2
Используя третий вариант: «Использование данных Excel>Новый запрос>Из файла>Из папки (Excel 2013)»
Нажмите на transform data
опцию, откроется редактор Power Query. Он покажет список файлов.
Нажмите кнопку в заголовке столбца content
, чтобы создать функцию, которая может преобразовать каждый отдельный CSV-файл перед их добавлением.
Выберите нужную таблицу или рабочий лист и выполните в transform sample file
функции следующие действия.
- Вставьте названия столбцов в первую строку, используя «использовать заголовки как первую строку».
- Таблица транспонирования
Затем в запросе, где вызывается функция, транспонированные файлы CSV добавляются. Просто transpose
верните таблицу в исходную форму и продвиньте the first row to headers
.
решение3
Вот код r для объединения CSV-файлов по столбцам:
setwd("C:/mycsvdir")
filenames <- list.files(full.name=TRUE)
## read csv, skipping the first two rows of every file
Everything <- lapply(filenames, function(i){read.csv(i, header=TRUE, skip=2)}
combined.df <- do.call(cbind.data.frame, Everything)
write.csv(combined.df, file = "combined.csv", row.names=FALSE)
Если вы хотите объединить CSV-файлы по строкам, просто замените cbind
на rbind
.
Редактировать: О последовательности слияния: мои CSV-файлы называются так mycsv 001.csv
, mycsv 002.csv
и т. д. Они были считаны и объединены именно в этой последовательности, что отлично подходило для моих целей.