super_banner_728x90

sexta-feira, 23 de julho de 2010

Função aggregate do R (exemplo simples)

Fala, pessoal! Blz?

De vez em quando vou colocar aqui algumas dicas de funções em linguagens que já trabalho ou que estou aprendendo.

A linguagem R é uma linguagem de programação livre que inicialmente foi criada para trabalhar com análises estatísticas, mas hoje em dia já têm coisas de muitas outras áreas implementadas em R.

A dica é sobre a função aggregate, que, como o nome já diz, agrega/une dados. O exemplo a seguir traz uma tabela com dados numéricos quaisquer para cada ítem (população, por exemplo, ou quantidade de qualquer coisa).

estado  cidade     bairro    qtd
CE      Crato      Centro    1
CE      Crato      Outro     2
CE      Fortaleza  Centro    3
CE      Fortaleza  Outro     4
SP      Campinas   Centro    5
SP      Campinas   Outro     6
SP      Sampa      Centro    7
SP      Sampa      Outro     8


Essa tabela está salva em txt ("tabela.txt", digamos), com os campos separados por tabulação.

# Carregando tabela na variável "tabela"
tabela <- read.delim('tabela.txt')

# Agregando a tabela por estados, pegando a soma
tab_por_estados = aggregate(
tabela$qtd, list('Estado'=tabela$estado),FUN=sum)

# Agregando a tabela por cidades, pegando a média
tab_por_cidades = aggregate(
tabela$qtd, list('Cidade'=tabela$cidade),FUN=mean)

# Explicação

tabela$qtd
# ~> Campo a ser modificado

list('nome_novo_do_campo'=tabela$cidade)
# ~> O campo será renomeado para 'nome_novo_do_campo'
# ~> depois do igual ('='), deve ter o campo da
#    tabela originala ser agrupado

FUN=mean
# ~> A função usada para agrupar os dados (ex: mean, sum, ...)

As novas variáveis tab_por_estados e tab_por_cidades conterão, respectivamente:

> tab_por_estados
  Estado  x
1     CE 10
2     SP 26


> tab_por_cidades
     Cidade   x
1  Campinas 5.5
2     Crato 1.5
3 Fortaleza 3.5
4     Sampa 7.5

Em breve vou postar mais sobre essa super-linguagem!

Para mais informações sobre o R:
Wikipedia: http://pt.wikipedia.org/wiki/R_(linguagem_de_programação)
Site oficial: http://www.r-project.org/