Média por Grupo no R

Imagine que você tenha uma base contendo informações de diversos grupos ou categorias diferentes. Pode ser que você tenha a informação de idade para cada indivíduo e queira saber a média por sexo, por região ou até por separação de grupo tratamento e controle. No R, o pacote plyr facilita bastante esta análise. Não tenho certeza se já postei isso antes, mas como utilizei o código agora a pouco durante um curso de Data Science, acho válido compartilhar.

A base utilizada está contida no pacote AppliedPredictiveModeling e se chama segmentationOriginal. Por isso, primeiro carreguei o pacote em questão:

library(AppliedPredictiveModeling)
data(segmentationOriginal)

Na sequência, separei as bases em treino e teste, pois iria criar um modelo:

#separa treino e teste
training = segmentationOriginal[segmentationOriginal$Case=="Train", ]
testing = segmentationOriginal[segmentationOriginal$Case=="Test", ]

Por fim, queria saber qual a média e desvio padrão do campo TotalIntenCh2, mas distinguindo as classes PS e WS:

library(plyr)
ddply(training,~Class,summarize,mean=mean(TotalIntenCh2),sd=sd(TotalIntenCh2))

Em suma, a função ddply vai receber as informações de (i) nome da base, (ii) grupo que deve ser utilizado no cálculo da descritiva,  (iii) summarize e as descritivas que você deseja, no meu caso foram (iv) média e (v) desvio padrão.

ddplyr(nome_da_base, ~grupo/classe, summarize, mean=mean(nome_da_variável), sd=sd(nome_da_variavel)

Se eu tivesse uma base chamada base, contendo a variável idade e quisesse calcular a média de idade por sexo, teríamos então:

ddplyr(base, ~sexo, summarize, mean = mean(idade)

Espero que tenha ficado claro. Se houver alguma dúvida, deixe um comentário!

Abraços e bons estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *