Объедините несколько CSV-файлов по столбцам, а не по строкам

Объедините несколько CSV-файлов по столбцам, а не по строкам

У меня есть ~100 CSV-файлов, которые я хочу объединить в одну таблицу Excel (все на одной вкладке, а не на отдельных вкладках). Эти CSV-файлы идентичны по формату: каждый содержит 4000 строк и 2 столбца с заголовком, размер около 60 КБ.

Все решения, которые я нашел до сих пор, добавляют следующий CSV в конец последней строки активной вкладки. Я не видел ни одного, которое может добавлять новые CSV в столбцы, расположенные непосредственно справа от последнего столбца.

Вот несколько примеров.

  1. Метод копирования DOS: копировать *.csv merge.txt

  2. Это решение. (Скрипт VBA.)

  3. Использование данных 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функции следующие действия.

  1. Вставьте названия столбцов в первую строку, используя «использовать заголовки как первую строку».
  2. Таблица транспонирования

Затем в запросе, где вызывается функция, транспонированные файлы 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и т. д. Они были считаны и объединены именно в этой последовательности, что отлично подходило для моих целей.

Связанный контент