Boa noite,
Alguém poderia me auxiliar no script para montar “tabela dinâmica” no R?
Eu tenho a seguinte tabela abaixo:
Gostaria de que a tabela ficasse organizada desta maneira, como uma tabela dinâmica:
Filtro: -
Coluna: Combustivel
Linha: Local e Parcela
Valores: Media(Peso_umido_final_Mg_ha)
Média (Peso_seco_final_Mg_ha)
Média(Umidade)
E utilizei o seguinte script:
dados_completos %>%
group_by(Local: Parcela, Combustivel) %>%
summarise(
medias_resultados = mean(Peso_umido_final_Mg_ha)
) %>%
pivot_wider(names_from = Combustivel, values_from = medias_resultados)
Peguei esse script aqui, mas não to sabendo organizar!
Desde já agradeço!
Olá @Mairoca, tudo bem?
Seria de grande ajuda se você puder fornecer um exemplo reprodutível. Dê uma olhada neste link para ajudar a montar um exemplo assim
Usando a base dos diamantes, por exemplo, adaptando seu código deu certinho.
library(tidyverse)
diamonds %>%
group_by(cut, color, clarity) %>%
summarise(
medias_resultados = mean(carat),
.groups = "drop"
) %>%
pivot_wider(
names_from = cut,
values_from = medias_resultados
)
#> # A tibble: 56 x 7
#> color clarity Fair Good `Very Good` Premium Ideal
#> <ord> <ord> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 D I1 1.88 1.04 0.95 1.16 0.96
#> 2 D SI2 1.02 0.858 0.932 0.919 0.750
#> 3 D SI1 0.914 0.701 0.708 0.692 0.595
#> 4 D VS2 0.844 0.702 0.634 0.585 0.499
#> 5 D VS1 0.63 0.663 0.583 0.687 0.534
#> 6 D VVS2 0.591 0.481 0.466 0.581 0.545
#> 7 D VVS1 0.607 0.491 0.475 0.538 0.460
#> 8 D IF 0.38 0.787 0.803 0.708 0.616
#> 9 E I1 0.969 1.33 1.07 1.04 1.04
#> 10 E SI2 1.02 0.883 0.930 0.958 0.874
#> # … with 46 more rows
Created on 2021-04-11 by the reprex package (v2.0.0)
O único problema na sua sintaxe é que na função group_by()
não é legal usar coisas como Local:Parcela
, que é da sintaxe do select()
. Se quiser usar, você precisa colocar dentro de um across()
, por exemplo:
library(tidyverse)
diamonds %>%
# pega cut, color e clarity
group_by(across(cut:clarity)) %>%
summarise(
medias_resultados = mean(carat),
.groups = "drop"
) %>%
pivot_wider(
names_from = cut,
values_from = medias_resultados
)
#> # A tibble: 56 x 7
#> color clarity Fair Good `Very Good` Premium Ideal
#> <ord> <ord> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 D I1 1.88 1.04 0.95 1.16 0.96
#> 2 D SI2 1.02 0.858 0.932 0.919 0.750
#> 3 D SI1 0.914 0.701 0.708 0.692 0.595
#> 4 D VS2 0.844 0.702 0.634 0.585 0.499
#> 5 D VS1 0.63 0.663 0.583 0.687 0.534
#> 6 D VVS2 0.591 0.481 0.466 0.581 0.545
#> 7 D VVS1 0.607 0.491 0.475 0.538 0.460
#> 8 D IF 0.38 0.787 0.803 0.708 0.616
#> 9 E I1 0.969 1.33 1.07 1.04 1.04
#> 10 E SI2 1.02 0.883 0.930 0.958 0.874
#> # … with 46 more rows
Created on 2021-04-11 by the reprex package (v2.0.0)