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!