olá pessoal, vejam a minha dúvida abaixo, se alguém pode me ajudar:
- fiz uma funcao com read_excel para copiar diferentes intervalos (ranges ) de diferentes abas de uma planilha. A funcao lista os arquivos xlsx da pasta e copia esses dados.
eu passei os intervalos desejados , e as abas para serem copiadas para a função usando purrr::pmap
até que a ideia funcionou, mas minha dúvida é que o resultado é uma lista de listas de tbl_df ,
como juntar essas informações da lista com bind_rows e bind_cols?
abaixo o codigo usado:
setwd("C:/Users/aless/Dropbox/R_folder/bmk/teste purr afin")
library(tidyverse)
library(readxl)
aba = c('cadastro','questionário')
intervalo = c('G2:G9', 'E4:E170')
Le_arquivos = function(sheet,range) {
temp = list.files(pattern = "*.xlsx")
plan = temp %>%
map(read_excel, sheet, range)
}
# gera lista de lista de df
df3 = pmap(list(aba,intervalo), Le_arquivos)
Created on 2021-01-24 by the reprex package (v0.3.0)
abaixo o resultado (df3):
o que eu desejo fazer:
1-fazer bind_rows do df [[1]] da lista [[1]] com df [[1]] da lista [[2]] e do df [[2]] da lista [[1]] com df [[2]] da lista [[2]] ,
pois os dados do df[[1]] na lista 1 e lista 2 são do mesmo cliente.
2 - fazer bind_cols do resultado gerado , ou seja em cada coluna terei dados de um cliente…
pensei uma solução que deu certo:
# filtra as listas e faz primeiro o bind_cols
cadastro = dplyr::bind_cols( df3[1])
resposta = dplyr::bind_cols( df3[2])
#> New names:
#> * Resposta -> Resposta...1
#> * Resposta -> Resposta...2
# renomeia as colunas de resposta para conseguir fazer bind_rows
nomes <- names(cadastro)
resposta <- purrr::set_names(resposta,nomes)
# reune em um df cadastro e resposta
df_completo = dplyr::bind_rows(cadastro, resposta)
muito obrigado,
caso alguém tenha alguma sugestão, será bem vinda.
Obs: a ação de organizar as idéias para pedir ajuda já me ajudou a chegar na solução…