How to export [[ ]] from a list in separate excel files using R?

Asked

Viewed 35 times

-1

I play here part of a dataframe I’m working on:

producao<-data.frame(
  discente = c("ANA",
               "ANA",
               "ANA",
               "ANA",
               "ANA",
               "MIGUEL",
               "MIGUEL",
               "MIGUEL",
               "MIGUEL",
               "MIGUEL",
               "JAIME",
               "JAIME",
               "JAIME",
               "JAIME",
               "JAIME",
               "JAIME",
               "JAIME",
               "SAULO",
               "SAULO"
  ),
  ano = c("2019",
          "2019",
          "2019",
          "2017",
          "2017",
          "2017",
          "2018",
          "2017",
          "2018",
          "2017",
          "2018",
          "2019",
          "2017",
          "2018",
          "2017",
          "2017",
          "2017",
          "2017",
          "2018"
  ),
  titulo = c("ABERTURA DO PROJETO UFPE NO MEU QUINTAL",
             "ACUMULAÇÃO POR DESPOSSESSÃO VISTA CARTOGRAFICAMENTE: Comunidade do Pilar",
             "ANÁLISE DA AUSÊNCIA DE INFORMAÇÃO EM PRODUTO MDE DO LIDAR NA INTERFACE ÁGUA/SOLO",
             "ANÁLISE DA CONTRIBUIÇÃO DA FUSÃO PELO MÉTODO IHS DE IMAGENS CBERS-2B (CCD E HRC) PARA DETECÇÃO DE BORDAS",
             "ANÁLISE DA EXTRAÇÃO DE LAGO POR MORFOLOGIA MATEMÁTICA EM IMAGEM IKONOS-2 E POR EXTRAÇÃO MANUAL",
             "ANÁLISE DA QUALIDADE AMBIENTAL NO RESERVATÓRIO SOBRADINHO, BRASIL, UTILIZANDO BIOINDICADORES E SENSORIAMENTO REMOTO",
             "ANÁLISE DAS ÁREAS CADASTRÁVEIS NA BASE DO SISTEMA NACIONAL DO CADASTRO AMBIENTAL RURAL (SICAR)",
             "ANÁLISE DAS BACIAS HIDROGRÁFICAS DO RIO BRÍGIDA, RIO TERRA NOVA E GRUPO DE BACIAS DE PEQUENOS RIOS",
             "ANÁLISE DE MÚLTIPLAS IMAGENS PARA DETECÇÃO DE BORDAS DO RESERVATÓRIO DE SOBRADINHO, BAHIA",
             "ANÁLISE ESPAÇO-TEMPORAL DA BARRAGEM BROTAS, ALTO CURSO DO RIO PAJEÚ - PE, MUNICÍPIO DE AFOGADOS DA INGAZEIRA",
             "ANÁLISE ESPAÇO-TEMPORAL DAS ÁREAS INUNDÁVEIS DO RESERVATÓRIO DE SOBRADINHO NA BACIA HIDROGRÁFICA DO RIO SÃO FRANCISCO RECIFE",
             "ANÁLISE ESPAÇO-TEMPORAL DE INCIDENTES COM TUBARÕES NO LITORAL DE PERNAMBUCO Dissertação",
             "ANÁLISE TEMPORAL A PARTIR DO MAPEAMENTO REGIONAL DO SOLO E DECLIVIDADE DE 1995 E IMAGENS DE SENSORIAMENTO REMOTO DE 2014",
             "ANÁLISE TEMPORAL DO USO E COBERTURA DO SOLO NO BIOMA CAATINGA EM PERNAMBUCO UTILIZANDO O MAPBIOMAS",
             "ANALYSIS OF ERRORS IN THE DIGITAL ELEVATION MODEL - SRTM FOR THE SOBRADINHO RESERVOIR/BA",
             "APLICAÇÃO DE FORMAS NATURAIS NO TRATAMENTO DE EFLUENTES: O USO DAS PLANTAS NA DEPURAÇÃO DE PEQUENOS AMBIENTES HÍDRICOS",
             "APLICAÇÃO E ANÁLISE DAS TÉCNICAS DE FUSÃO IHS E COMPONENTES PRINCIPAIS EM IMAGENS DO SATÉLITE CBERS-2B MULTISSENSORES HRC/CCD",
             "AS GEOTECNOLOGIAS E O CONTROLE DO CHORUME: O USO DA GEOCIÊNCIA NA AQUISIÇÃO DE AMBIENTES ADEQUADOS PARA ATERROS SANITÁRIOS CONTROLADOS",
             "AVALIAÇÃO DO SENSORIAMENTO REMOTO TERMAL PARA MONITORAMENTO DE ATERROS SANITÁRIOS"
  )
)


> head(producao)
  discente  ano                                                                                                              titulo
1      ANA 2019                                                                             ABERTURA DO PROJETO UFPE NO MEU QUINTAL
2      ANA 2019                                            ACUMULAÇÃO POR DESPOSSESSÃO VISTA CARTOGRAFICAMENTE: Comunidade do Pilar
3      ANA 2019                                    ANÁLISE DA AUSÊNCIA DE INFORMAÇÃO EM PRODUTO MDE DO LIDAR NA INTERFACE ÁGUA/SOLO
4      ANA 2017            ANÁLISE DA CONTRIBUIÇÃO DA FUSÃO PELO MÉTODO IHS DE IMAGENS CBERS-2B (CCD E HRC) PARA DETECÇÃO DE BORDAS
5      ANA 2017                      ANÁLISE DA EXTRAÇÃO DE LAGO POR MORFOLOGIA MATEMÁTICA EM IMAGEM IKONOS-2 E POR EXTRAÇÃO MANUAL
6   MIGUEL 2017 ANÁLISE DA QUALIDADE AMBIENTAL NO RESERVATÓRIO SOBRADINHO, BRASIL, UTILIZANDO BIOINDICADORES E SENSORIAMENTO REMOTO

My purpose is to obtain excel tables with the production of each student. Using the function subset() is very time consuming, because the original dataset has 14 students. So I would have to type subset(producao, producao$discente == "NOME DO DISCENTE") to obtain the production of each and then would still have to repeat 14 times the export process to excel.

I have been researching and saw that it is possible to create a list with the function split()

producao_per_discente<-split(producao, producao$discente)

$ANA
  discente  ano                                                                                                   titulo
1      ANA 2019                                                                  ABERTURA DO PROJETO UFPE NO MEU QUINTAL
2      ANA 2019                                 ACUMULAÇÃO POR DESPOSSESSÃO VISTA CARTOGRAFICAMENTE: Comunidade do Pilar
3      ANA 2019                         ANÁLISE DA AUSÊNCIA DE INFORMAÇÃO EM PRODUTO MDE DO LIDAR NA INTERFACE ÁGUA/SOLO
4      ANA 2017 ANÁLISE DA CONTRIBUIÇÃO DA FUSÃO PELO MÉTODO IHS DE IMAGENS CBERS-2B (CCD E HRC) PARA DETECÇÃO DE BORDAS
5      ANA 2017           ANÁLISE DA EXTRAÇÃO DE LAGO POR MORFOLOGIA MATEMÁTICA EM IMAGEM IKONOS-2 E POR EXTRAÇÃO MANUAL

$JAIME
   discente  ano                                                                                                                        titulo
11    JAIME 2018  ANÁLISE ESPAÇO-TEMPORAL DAS ÁREAS INUNDÁVEIS DO RESERVATÓRIO DE SOBRADINHO NA BACIA HIDROGRÁFICA DO RIO SÃO FRANCISCO RECIFE
12    JAIME 2019                                       ANÁLISE ESPAÇO-TEMPORAL DE INCIDENTES COM TUBARÕES NO LITORAL DE PERNAMBUCO Dissertação
13    JAIME 2017      ANÁLISE TEMPORAL A PARTIR DO MAPEAMENTO REGIONAL DO SOLO E DECLIVIDADE DE 1995 E IMAGENS DE SENSORIAMENTO REMOTO DE 2014
14    JAIME 2018                            ANÁLISE TEMPORAL DO USO E COBERTURA DO SOLO NO BIOMA CAATINGA EM PERNAMBUCO UTILIZANDO O MAPBIOMAS
15    JAIME 2017                                      ANALYSIS OF ERRORS IN THE DIGITAL ELEVATION MODEL - SRTM FOR THE SOBRADINHO RESERVOIR/BA
16    JAIME 2017        APLICAÇÃO DE FORMAS NATURAIS NO TRATAMENTO DE EFLUENTES: O USO DAS PLANTAS NA DEPURAÇÃO DE PEQUENOS AMBIENTES HÍDRICOS
17    JAIME 2017 APLICAÇÃO E ANÁLISE DAS TÉCNICAS DE FUSÃO IHS E COMPONENTES PRINCIPAIS EM IMAGENS DO SATÉLITE CBERS-2B MULTISSENSORES HRC/CCD

$MIGUEL
   discente  ano                                                                                                              titulo
6    MIGUEL 2017 ANÁLISE DA QUALIDADE AMBIENTAL NO RESERVATÓRIO SOBRADINHO, BRASIL, UTILIZANDO BIOINDICADORES E SENSORIAMENTO REMOTO
7    MIGUEL 2018                      ANÁLISE DAS ÁREAS CADASTRÁVEIS NA BASE DO SISTEMA NACIONAL DO CADASTRO AMBIENTAL RURAL (SICAR)
8    MIGUEL 2017                  ANÁLISE DAS BACIAS HIDROGRÁFICAS DO RIO BRÍGIDA, RIO TERRA NOVA E GRUPO DE BACIAS DE PEQUENOS RIOS
9    MIGUEL 2018                           ANÁLISE DE MÚLTIPLAS IMAGENS PARA DETECÇÃO DE BORDAS DO RESERVATÓRIO DE SOBRADINHO, BAHIA
10   MIGUEL 2017        ANÁLISE ESPAÇO-TEMPORAL DA BARRAGEM BROTAS, ALTO CURSO DO RIO PAJEÚ - PE, MUNICÍPIO DE AFOGADOS DA INGAZEIRA

$SAULO
   discente  ano
18    SAULO 2017
19    SAULO 2018
                                                                                                                                   titulo
18 AS GEOTECNOLOGIAS E O CONTROLE DO CHORUME: O USO DA GEOCIÊNCIA NA AQUISIÇÃO DE AMBIENTES ADEQUADOS PARA ATERROS SANITÁRIOS CONTROLADOS
19                                                      AVALIAÇÃO DO SENSORIAMENTO REMOTO TERMAL PARA MONITORAMENTO DE ATERROS SANITÁRIOS


But also I can only get so far. My goal, to get excel files for each of the [[]] of the list is not reached.

In other words, what I would like to know is whether there is a possibility, with a command, to export my list so that each one [[]] turn into separate files. In the on-screen example, 4 excel files would be generated.

  • Why not a single file with a sheet for each list?

  • Hi Rui; good afternoon. It’s because I need to send the files to each of the authors to check if everything is correct. But just out of curiosity, how would you put each author on a sheet?

2 answers

3


...

library(xlsx)

producao_per_discente<-split(producao, producao$discente)

lapply(seq_along(producao_per_discente), 
       function(i) write.xlsx(producao_per_discente[[i]],
                              file = paste0(names(producao_per_discente)[[i]],'.xlsx')))

I used the xlsx package to record the files. The split produces a list of dataframes, I used lapply to go through the list, taking the name to save the xlsx.

1

Here are three different modes, with three different packages, of exporting a list of data.frames to an Excel file ".xlsx" with each date.frame on a sheet.

The list is for the question. The split creates a list with names and these names will be the names of the various sheets. The files have the names "output_n.xlsx", n = 1, 2, 3.

producao_per_discente <- split(producao, producao$discente)

library(WriteXLS)

WriteXLS(producao_per_discente,
         ExcelFileName = "producao_per_discente_1.xlsx")

library(writexl)

write_xlsx(producao_per_discente,
           path = "producao_per_discente_2.xlsx")

library(xlsx)

for(i in seq_along(producao_per_discente)){
  write.xlsx(producao_per_discente[[i]], file = "producao_per_discente_3.xlsx",
             sheetName = names(producao_per_discente)[i], append = i > 1L)
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.