Empilhar dados de uma planilha

Olá.

Tenho uma unica planilha em Excel com várias pastas, todas com variáveis similares. Como faço para empilhar todas essas pastas num único dataframe?

Pensei em usar o map_dfr, mas não sei como indexar as “sheets”.

Obrigado

Olá!

Você sabe os nomes de cada sheet (pastas)? Caso você saiba disso, você pode fazer algo como:

sheets <- c("sheet_a", "sheet_b")

purrr::map_dfr(
   .x = sheets,
   .f = ~ readxl::read_xlsx("planilha.xlsx", sheet = .x)
) 

Onde o vetor sheets possui os nomes das pastas.

2 curtidas

Funcionou perfeitamente.

Obrigado Douglas.

Deu certo para duas pastas. Quando fui tentar para mais, deu erro.

`sheets ← c(1:3)

c2 ← purrr::map_dfr(
.x = sheets,
.f = ~ readxl::read_xlsx(“data_raw/geralNN.xlsx”, sheet = .x)
)

Error in dplyr::bind_rows():
! Can’t combine ..1$Neg_Ano5 and ..3$Neg_Ano5 .

Opa, então. Isso normalmente ocorre quando o nome das colunas que você quer juntar não são iguais ou tem tipos diferentes (por ex., a coluna tem o mesmo nome, mas uma é de data e outra de inteiros).

Se você puder reproduzir esse erro novamente e usar rlang::last_error() e depois rlang::last_trace(), e mandar aqui o erro para podermos entender melhor, por favor.

Abs

2 curtidas

Olá Douglas.

Na verdade, o código está certo. O erro é porque as outras planilhas tem tipo de variáveis diferentes, por isso não conseguiu ler. Precisar ajustar isso antes de empilhar.

Mais um vez, muito obrigado.

1 curtida