단일 Excel 스프레드시트(별도의 탭이 아닌 하나의 탭에 모든 항목 포함)로 결합하려는 최대 100개의 CSV 파일이 있습니다. 이러한 CSV 파일은 형식이 동일합니다. 각 파일에는 약 60KB 크기의 헤더가 있는 4,000개의 행과 2개의 열이 포함되어 있습니다.
지금까지 찾은 모든 솔루션은 활성 탭의 마지막 행 끝에 다음 CSV를 추가합니다. 마지막 열 바로 오른쪽 열에 새 CSV를 추가할 수 있는 항목을 본 적이 없습니다.
다음은 몇 가지 예입니다.
DOS 복사 방법: *.csv merge.txt 복사
이 솔루션. (VBA 스크립트.)
Excel의 데이터>새 쿼리>파일에서>폴더에서(Excel 2013) .
인터넷에서 CSV 파일을 병합하기 위한 Windows Powershell 스크립트의 예도 있습니다.
위의 모든 방법은 약 400,000행의 데이터가 포함된 단일 Excel 스프레드시트를 생성하는데 이는 나에게는 쓸모가 없습니다.
이 문제를 해결하기 위한 제안을 보내주시면 감사하겠습니다. 감사해요!
편집하다. 쉬운 해결책을 찾았습니다. r의 cbind()를 사용하여 데이터 프레임의 데이터를 결합한 다음 이를 csv에 씁니다. 전체 프로세스에는 ~3초가 걸렸습니다. 작업에 적합한 도구!
기여해 주신 모든 분들께 감사드립니다. 건배,
--tcollar
답변1
"네이티브" Windows 10에 대해서는 잘 모르겠지만 Linux용 Windows 하위 시스템이 설치되어 있는 경우 paste
원하는 방식으로 파일을 열별로 연결하는 UNIX 명령을 사용할 수 있습니다.
답변2
세 번째 옵션 사용: 'Excel의 데이터 사용>새 쿼리>파일에서>폴더에서(Excel 2013)'
옵션을 클릭하면 transform data
파워 쿼리 편집기가 열립니다. 파일 목록이 표시됩니다.
열 헤더에 있는 버튼을 클릭하면 content
모든 개별 CSV 파일을 추가하기 전에 변환할 수 있는 기능을 만들 수 있습니다.
올바른 테이블이나 워크시트를 선택하고 transform sample file
함수에서 다음을 수행합니다.
- '헤더를 첫 번째 행으로 사용'을 사용하여 첫 번째 행에 열 이름을 삽입합니다.
- 조옮김 테이블
그런 다음 함수가 호출되는 쿼리에 전치된 CSV 파일이 추가됩니다. transpose
테이블을 원래 모양으로 되돌리고 승격시키기 만 하면 됩니다 the first row to headers
.
답변3
csv 파일을 열별로 결합하는 r 코드는 다음과 같습니다.
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)
cbind
csv 파일을 행 별로 결합하려면 rbind
.
편집: 병합 순서 정보: 내 csv 파일의 이름은 mycsv 001.csv
, mycsv 002.csv
등으로 지정됩니다. 해당 순서로 정확하게 읽고 병합되었으며 이는 내 목적에 적합했습니다.