Combine vários arquivos CSV por coluna, não por linha

Combine vários arquivos CSV por coluna, não por linha

Tenho cerca de 100 arquivos CSV que desejo combinar em uma única planilha do Excel (tudo em uma guia, não em guias separadas). Esses arquivos CSV são idênticos em formato: cada um contém 4.000 linhas e 2 colunas com cabeçalho, com cerca de 60 KB de tamanho.

Todas as soluções que encontrei até agora acrescentam o próximo CSV no final da última linha da guia ativa. Não vi nenhum que pudesse anexar novos CSVs às colunas imediatamente à direita da última coluna.

Aqui estão alguns exemplos.

  1. Método de cópia DOS: copiar *.csv merge.txt

  2. Esta solução. (roteiro VBA.)

  3. Usando dados do Excel>Nova consulta>Do arquivo>Da pasta (Excel 2013) .

Também existem exemplos de scripts do Windows Powershell para mesclar arquivos CSV na Internet.

Todos os itens acima criam uma única planilha Excel com cerca de 400.000 linhas de dados, o que é inútil para mim.

Eu apreciaria sugestões para resolver este problema. Obrigado!

Editar. Uma solução fácil é encontrada: usar cbind() de r para combinar os dados em um quadro de dados e depois gravá-los em um csv. Todo o processo levou cerca de 3 segundos. Ferramenta certa para o trabalho!

Obrigado a todos por contribuir. Saúde,

--tcollar

Responder1

Não tenho certeza sobre o Windows 10 "nativo", mas se você tiver o subsistema Windows para Linux instalado, poderá usar o pastecomando UNIX, que deve concatenar os arquivos por colunas, da maneira que você está pedindo.

Responder2

Usando sua terceira opção: 'Usando dados do Excel> Nova consulta> Do arquivo> Da pasta (Excel 2013)'

Clique na transform dataopção para abrir o editor de consulta avançada. Ele mostrará uma lista dos arquivos.

Clique no botão no cabeçalho da coluna contentpara criar uma função que pode transformar cada arquivo CSV individual antes de anexá-los.

Selecione a tabela ou planilha correta e faça o seguinte na transform sample filefunção.

  1. Insira os nomes das colunas na primeira linha usando `use headers as first row'
  2. Transpor tabela

Então, na consulta onde a função é invocada, os arquivos CSV transpostos são anexados. Simplesmente transposea mesa de volta à forma original e promova the first row to headers.

Responder3

Aqui está o código r para combinar arquivos csv por coluna:

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)

Se você quiser combinar arquivos csv por linha, basta substituir cbindpor rbind.

Editar: Sobre a sequência de mesclagem: meus arquivos csv são nomeados como mycsv 001.csv, mycsv 002.csv, etc. Eles foram lidos e mesclados exatamente nessa sequência, o que foi ótimo para o meu propósito.

informação relacionada