Suponha que você tenha uma tabela analítica com as informações de compras dos seus clientes. Cada linha da tabela equivale a uma compra diferente que o cliente fez. O que você quer é saber o valor médio das compras de cada cliente. Como você conseguiria fazer isso no R?
ATENÇÃO: Já avisei algumas vezes, o WordPress às vezes bagunça a identação (espaçamento). Tome cuidado ao copiar e colar o código em R.
Bom, primeiro, vamos visualizar o que queremos fazer. Abaixo, você tem a imagem de duas tabelas, uma é a analítica e a outra é a visão consolidada:
Já sabemos fazer isso no SQL ou no PROC SQL do SAS, sendo que este segundo ficaria da seguinte forma (você pode ver o tutorial completo do PROC SQL no post Tutorial: Proc Sql (SAS)):
proc sql;create table tabela_exemplo_2 as select id, mean(vlr_compra) as vlr_compra_medio from tabela_exemplogroup by 1;run;
Mas como poderíamos fazer este agrupamento no R?
Bom, é simples, precisamos utilizar a função aggregate. Primeiro, vamos construir esta base no R:
id = c("AA111","AA111","AA111","BB222","BB222","BB222","CC333","CC333","CC333"); vlr_compra = c(200,250,300,50,350,500,300,150,150); data = as.Date(c('2018-01-21','2018-02-25','2018-06-30', '2018-04-25','2018-09-20','2018-11-20', '2018-07-15','2018-09-05','2018-11-11')) tabela_exemplo = data.frame(id, vlr_compra, data)
Agora, vamos usar a função aggregate. É bem simples, tudo que você precisa fazer é apontar para ela qual a variável que será agrupada (valor da compra), qual a variável chave do agrupamento (id) e qual o tipo de agrupamento (média):
tabela_exemplo_2 = aggregate(tabela_exemplo$vlr_compra, list(tabela_exemplo$id), mean)
Você deve ter notado que o nome da primeira variável ficou Group.1 e da segunda ficou como x. Uma forma de melhorar isso, é combinando a função setNames, fazendo com que ela receba o aggregate como primeiro argumento e os nomes que você deseja aplicar como segundo argumento:
tabela_exemplo_2 = setNames(aggregate(tabela_exemplo$vlr_compra, list(tabela_exemplo$id), sum), c("id","vlr_compra_medio"))
Mas e se você tivesse mais de uma variável a ser agrupada? E se eu quisesse a soma das variáveis?
Neste caso, o código ficaria melhor com as posições das colunas. Suponha que você tivesse na coluna 2 o valor da compra e na coluna 3 o desconto aplicado. Para calcular a soma destas variáveis por cada id, teríamos que usar o seguinte código:
tabela_exemplo_2 = aggregate(tabela_exemplo[, 2:3] list(tabela_exemplo$id), sum)
Simples, não?
Se você ficou com alguma dúvida, tem alguma crítica ou sugestão, deixe seu comentário ou entre em contato comigo pelo formulário que está em Sobre o EstatSite.
E aí, curtiu o post?
E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.
Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!
BONS ESTUDOS!