- Método 1: Calcular o desvio padrão por grupo usando a Base R
- Método 2: Calcular Desvio padrão por grupo usando dplyr
- Método 3: Calcular o desvio padrão por grupo usando data.table
Pode utilizar um dos seguintes métodos para calcular o desvio padrão por grupo no R:
Método 1: Utilizar a base R
aggregate(df$col_to_aggregate, list(df$col_to_group_by), FUN=sd)
Método 2: Utilizar o dplyr
library (dplyr) df %>% group_by(col_to_group_by) %>% summarise_at(vars(col_to_aggregate), list(name=sd))
Método 3: Utilizar data.table
library (data.table) setDT(df) dt[ ,list(sd=sd(col_to_agregado)), by=col_to_group_by]
Os exemplos seguintes mostram como utilizar cada um destes métodos na prática com a seguinte estrutura de dados em R:
#create data frame df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 6 ), points=c(8, 10, 12, 12, 14, 15, 10, 11, 12, 18, 22, 24, 3, 5, 5, 6, 7, 9)) #view data frame df team points 1 A 8 2 A 10 3 A 12 4 A 12 5 A 14 6 A 15 7 B 10 8 B 11 9 B 12 10 B 18 11 B 22 12 B 24 13 C 3 14 C 5 15 C 5 16 C 6 17 C 7 18 C 9
Método 1: Calcular o desvio padrão por grupo usando a Base R
O código a seguir mostra como usar o agregar() da base R para calcular o desvio padrão dos pontos marcados por equipa:
#calcular o desvio padrão dos pontos por equipa aggregate(df$points, list(df$team), FUN=sd) Grupo.1 x 1 A 2,562551 2 B 6,013873 3 C 2,041241
Método 2: Calcular Desvio padrão por grupo usando dplyr
O código a seguir mostra como usar o grupo_por () e resumir_at() funções do dplyr para calcular o desvio padrão dos pontos marcados por equipa:
biblioteca (dplyr) #Calcular o desvio padrão dos pontos marcados pela equipa df %>% group_by(team) %>% summarise_at(vars(points), list(name=sd)) # Um dado: 3 x 2 nome da equipa 1 A 2,56 2 B 6,01 3 C 2,04
Método 3: Calcular o desvio padrão por grupo usando data.table
O código seguinte mostra como calcular o desvio padrão dos pontos marcados por equipa utilizando funções do dados.tabela pacote:
biblioteca (data.table) #converter o quadro de dados em tabela de dados setDT(df) #calcular o desvio padrão dos pontos marcados pela equipa df[ ,list(sd=sd(pontos)), by=equipa] equipa sd 1: A 2,562551 2: B 6,013873 3: C 2,041241
Repare que os três métodos apresentam os mesmos resultados.
Nota Se estiver a trabalhar com um quadro de dados extremamente grande, recomenda-se a utilização do dplyr ou dados.tabela uma vez que estes pacotes têm um desempenho muito mais rápido do que o R de base.