Criar tabela dinâmica

Boa tarde,
Poderia me auxiliar como que eu faço para montar “tabela dinâmica” no R?

Eu tenho a seguinte tabela abaixo:

Gostaria de que a tabela acima seja organizada desta maneira, como uma tabela dinâmica:
Filtro: Mercado e Venda
Coluna: Mes
Linha: Produto_Ajustado
Valor: Soma(Prevol)/ Soma (Volume)

Poderia me ajudar?

Obrigada.

Dois pacotes que, juntos, fazem todas as operações de tabelas dinâmicas: {tidyr} e {dplyr}

No seu exemplo ficaria assim:

library(dplyr)
library(tidyr)

Volume_Preco %>%
  filter(Mercado == "Interno", Venda = "Venda") %>%
  group_by(Produto_Ajustado, Mes) %>%
  summarise(
    razao_das_somas = sum(Prevol)/sum(Volume)
  ) %>%
  pivot_wider(names_from = Mes, values_from = razao_das_somas)

(ps: não testei o código!)

Athos, muito obrigada pelo retorno.
Deu certo.
Porém, agora apareceu outra dúvida. Poderia me ajudar?
Sabe me dizer como que eu concateno as informações de colunas da base?
Gostaria de criar uma coluna concatenando as informações das colunas “Mes”, “Produto”, Venda" e “Cliente”.
E outra, como você pode observar, a coluna Mes, as datas estão como chr “Nov”, “Dez”. Sendo assim, quando gero tabela dinâmica a ordem das colunas são de ordem do alfabeto. Teria como eu definir a ordem das colunas?

Pra unir as colunas vc poderia usar a funcao tidyr::unite(nome_da_coluna_nova, Mes, Produto, Venda, Cliente)

Quanto à ordem das colunas, tem um jeito cavalar que é simplesmente fazer select(Jan, Fev, ..., Dez)

A regra que o pivot_wider usa é a ordem que aparece na base, então vc poderia tbm tentar fazer um arrange(Mes_numero) antes do pivot_wider. Mas o problema talvez vai ser achar essa a coluna com os meses representados por números, neh?

Athos, está dando certo! Muito obrigada.
Mas estou na terceira tabela e um erro inesperado ocorreu. Poderia me ajudar mais uma vez?

Segue o código:

premio_mi_down <- Volume_Preco %>%
filter (Mercado == “Interno” & Venda == “Trading / Revenda” | Venda == “Venda” | Venda == “Beneficiamento” &
Produto_Ajustado == “N1_Anodizado” | Produto_Ajustado ==“N1_Bobina” | Produto_Ajustado ==“N1_Chapa_Grossa” |
Produto_Ajustado == “N1_Chapa_Lisa” | Produto_Ajustado == “N1_Folha_Fina” | Produto_Ajustado == “N1_Folha_Grossa” |
Produto_Ajustado == “N1_Folha_HHF” | Produto_Ajustado == “N1_Folha_Tetra_Pak” | Produto_Ajustado == “N1_Natural” |
Produto_Ajustado == “N1_Pintado” | Produto_Ajustado == “N1_Polytype_Texturado” |
Produto_Ajustado == “N1_Telhas_e_Acessorios” | Produto_Ajustado == “N1_Folha_Media”) %>%
group_by(Produto_Ajustado, Mes) %>%
summarise(razao_das_somas = sum(PreVol)/sum(Volume)) %>%
pivot_wider(names_from = Mes, values_from = razao_das_somas)

Porém, quando eu gero o PIVOT, por exemplo, os valores de alguns Produto_Ajustado não costam:

image

Mesmo que tenha valor na coluna Prevol:

Será que estou fazendo algum teste lógica errada?