Loop em diferentes data frames

Olá,

Eu tenho diferentes dataframes com o mesmo número de variáveis e quantidade de observações diferentes. Suponha que cada dataframe refere-se à um mês do ano.

Preciso realizar um conjunto de operações para cada dataframe de forma sepada, (por ex. gerar gráficos, tabelas), bem como ao final preciso de um consolidado.

Para um ou outro dataframe é possível escrever os cálculos individualmente, mas para vários meses o script ficaria muito grande e repetitivo. Como posso utilizar um “for” que faz um loop em cada df (gerando os objetos de gráficos e tabelas mencionados), e a melhor forma de eu gerar um consolidado ao final de tudo?

ALERTA DE MERCHAN DISCARADO =P
Sinceramente o que vc precisa é conhecer os pacotes do tidyverse, em especial: purrr, tibble, dplyr e ggplot2. E esses são os tópicos dos nossos cursos de R para ciência de dados (em especial o II que fala de purrr).

Sobre a resposta que você procura pontualmente, vc poderia mostrar um exemplo de output desejado? Pq explicar genericamente como se faz tudo isso requer muita coisa!

Enquanto isso, segue um exemplo simples de uma maneira que poderia ser feita. E eu já até sei que, dependendo do jeito que estão os seus dados, teria jeito ainda melhor. Eu particularmente gosto de data.frames com list-columns (https://tidyr.tidyverse.org/articles/nest.html).

library(tidyverse)

# suposicao: lista de data.frames ------------------------------

lista_de_dfs <- list (
  df_jan = tibble(
    mes = c("jan"),
    x1 = runif(3),
    x2 = rnorm(3)
  ),
  
  df_fev = tibble(
    mes = c("fev"),
    x1 = runif(6),
    x2 = rnorm(6)
  )
)

# fazendo um gráfico pra cada ----------------------------
funcao_que_faz_o_grafico <- function(data) {
  ggplot(data, aes(x1, x2)) + geom_point()
}

map(lista_de_dfs, funcao_que_faz_o_grafico)

# fazendo uma tabela pra cada ----------------------------
funcao_que_faz_a_tabela <- function(data) {
  data %>% summarise(x1_media = mean(x1), x2_media = mean(x2))
}

map(lista_de_dfs, funcao_que_faz_a_tabela)

Valeu, @Athos Inclusive fiz o r4ds1 e estou no r4ds2 de vocês e recomendo!.
Eu estava usando o tidyverse junto com as funções nativas lapply, “for” etc. Não conhecia esta map(). Para extrair os conjuntos da lista de dados após as operações para uma apresentação por exemplo, você recomendaria algo como lista[[1]] mesmo?

1 curtida

recomendaria, sim! E se a lista tiver nomes, vc pode acessar por lista$df_jan tbm (é bom pq o TAB funciona no RStudio kkk).

Lega, Guilherme, acho q vc vai aproveitar bastante, então!

2 curtidas