![Combine vários arquivos CSV por coluna, não por linha](https://rvso.com/image/1604668/Combine%20v%C3%A1rios%20arquivos%20CSV%20por%20coluna%2C%20n%C3%A3o%20por%20linha.png)
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.
Método de cópia DOS: copiar *.csv merge.txt
Esta solução. (roteiro VBA.)
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 paste
comando 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 data
opção para abrir o editor de consulta avançada. Ele mostrará uma lista dos arquivos.
Clique no botão no cabeçalho da coluna content
para 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 file
função.
- Insira os nomes das colunas na primeira linha usando `use headers as first row'
- Transpor tabela
Então, na consulta onde a função é invocada, os arquivos CSV transpostos são anexados. Simplesmente transpose
a 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 cbind
por 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.