Demonstrando dados com a função aggregate no R

A função aggregate no R é bem interessante. Como o próprio nome diz, ela agrega as informações de um data frame incluindo alguma função que é especificada por um parâmetro chamado FUN. Vejamos um exemplo utilizando a base mtcars do próprio R:

## Visualizando a base View(mtcars)
## cria uma tabela com combinacoes de cyl e gear e uma estatistica
## descritiva do mpg para cada combinacao
myData <- aggregate(mtcars$mpg,
by = list(cyl = mtcars$cyl, gears = mtcars$gear),
FUN = function(x) mean = mean(x));

No exemplo acima, o resultado é um data frame com 8 linhas, sendo que cada linha possui na primeira coluna o campo cyl e na segunda o campo gear, e para cada combinação temos a média, desvio padrão e número de mpg diferentes que aparecem:

aggregate

Ou seja, olhando para nossa segunda linha, temos que para carros com 6 cilindros (cyl) e 3 marchas (gears) a média de milhas por galão é 19.75, o desvio padrão é 2.3334524 e há dois elementos nessa base com essas características. Fica a seu critério qual função você quer utilizar, poderia ser o máximo, o mínimo, ou até mesmo uma função que você criou em R.

Veja que utilizamos c() porque estamos trabalhando com diversas funções. Fazemos a mesma coisa quando criamos um vetos com diversos elementos:

exemplo = c(1,2,3,4,5);

Se quiséssemos incluir somente a função média, nosso código ficaria:

myData <- aggregate(mtcars$mpg,
by = list(cyl = mtcars$cyl, gears = mtcars$gear),
FUN = function(x) mean = mean(x));

3 comentários

  1. Olá Yukio:

    suponha que exista a seguinte tabela de dados no R:

    ID<-c(9673,9673,15049,15049,15049,15049,15049,15049,15049,15049,15049,15049, 15049)
    dt_inicio<-c("2018-01-25","2018-04-09","2010-08-26","2010-12-22","2011-04-19", "2012-09-12","2013-07-10","2014-04-09","2014-09-10","2015-03-11","2015-10-14", "2016-08-10","2017-03-08")
    dt_fim<-c("2018-04-09","2018-08-28","2010-12-22","2011-04-19","2012-09-12", "2013-07-10","2014-04-09","2014-09-10","2015-03-11","2015-10-14","2016-08-10", "2017-03-08","2017-09-13")
    CD4_status<-c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    VL_status<-c(2, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0)
    ART_adher<-c(0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0)
    TP_FOLLOW<-c(74,141, 118, 118, 512, 301, 273, 154, 182, 217, 301, 210, 189)
    database%summarise(Total=sum(TP_FOLLOW))
    não me atende pq ele soma o TP_FOLLOW de todos os resultados iguais e não considera somente aqueles que estão em intervalos consecutivos….Desde já agradeço a compreenção, abraços

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s