Pular para o conteúdo principal

R sd() Função: Desvio padrão no R

Saiba como medir a variabilidade em seus dados usando a função sd() do R. Descubra exemplos práticos e técnicas essenciais para lidar com valores ausentes e dados agrupados.
Atualizado 23 de jun. de 2025  · 5 min lido

O desvio padrão é uma das formas mais comuns de resumir a dispersão dos dados. No R, a função sd() oferece uma maneira rápida de calcular essa medida de variabilidade, independentemente de você estar trabalhando com vetores, quadros de dados ou dados agrupados. 

Neste artigo, abordarei os conceitos básicos do uso do sd() no R, explorarei como lidar com valores ausentes e demonstrarei como calcular desvios padrão entre grupos usando funções como tapply() e pacotes como dplyr.

O que sd() faz no R?

No R, a função sd() da base R calcula o desvio padrão de um vetor numérico ou coluna de quadro de dados. Ele mede o quanto os valores nos seus dados se desviam da média, dando a você uma noção de variabilidade ou dispersão.

Se você estiver familiarizado com a ideia de variância, o desvio padrão é simplesmente sua raiz quadrada e, devido à forma como é calculado (tomando a raiz quadrada do desvio quadrático médio), o desvio padrão permanece na mesma escala dos dados originais. Isso facilita a interpretação em termos práticos.

Um exemplo simples de sd()

Suponha que você tenha um conjunto de números e queira saber o quanto eles variam em relação à média.

Veja como você faria isso no R:

exam_scores <- c(75, 80, 85, 90, 95) 
sd(exam_scores) 

O resultado informa a você o desvio padrão, que quantifica a distância média de cada pontuação em relação à média.

Você pode usar sd() com qualquer vetor numérico, incluindo números inteiros, duplos ou os resultados de cálculos. Agora, você deve saber que o R trata os vetores lógicos como numéricos (TRUE como 1, FALSE como 0), de modo que a função sd() funcionaria tecnicamente em vetores lógicos (você pode experimentá-la se quiser), mas a ideia de desvio padrão é mais significativa para dados numéricos contínuos.

Manipulação de valores faltantes com sd()

Os conjuntos de dados do mundo real geralmente contêm valores ausentes, portanto, vale a pena mencionar esse fato: Se seus dados incluírem valores NA, sd() retornará NA por padrão.

Considere este exemplo:

heights <- c(170, 175, NA, 180, 185)
sd(heights)

O resultado é NA.

Para ignorar os valores ausentes e calcular o desvio padrão dos números disponíveis, use o argumento na.rm = TRUE. Ou então, você pode excluir os valores de NA do seu conjunto de dados, mas eu aconselharia fazer isso somente se fizer sentido.

sd(heights, na.rm = TRUE) 

Agora você obterá o desvio padrão para 170, 175, 180 e 185.

Cálculo do desvio padrão para quadros de dados no R

Você pode calcular facilmente o desvio padrão de uma coluna específica em um quadro de dados usando o operador $. Suponha que você tenha um quadro de dados de pesos de produtos:

product_data <- data.frame( weight = c(1.2, 1.5, 1.3, 1.7, 1.4), price = c(10, 12, 11, 13, 12) ) 
sd(product_data$weight)

Isso fornece a você o desvio padrão da coluna weight. Lembre-se de que o site sd() foi projetado para vetores numéricos, não para quadros de dados inteiros. Sempre selecione a coluna apropriada.

sd() e desvios padrão agrupados

Muitas vezes, você desejará medir a variabilidade dentro dos grupos, como por categoria, região ou por algum outro fator. O R oferece várias maneiras de calcular desvios padrão agrupados. Vou mostrar três:

Usando tapply() para desvios padrão agrupados

Suponha que você tenha dados de vendas de diferentes regiões e queira obter o desvio padrão de cada região:

sales_amount <- c(200, 220, 210, 250, 240, 230) 
region <- c("North", "North", "South", "South", "North", "South") 
tapply(sales_amount, region, sd)

tapply() aplica-se sd() a cada grupo definido por região.

Usando aggregate() para desvios padrão agrupados

Se você preferir seus resultados em um quadro de dados organizado, o site aggregate() funciona:

sales_data <- data.frame( region = c("North", "North", "South", "South", "North", "South"), amount = c(200, 220, 210, 250, 240, 230) ) 
aggregate(amount ~ region, data = sales_data, sd)

Isso produz um quadro de dados resumido com o desvio padrão para cada região.

Usando o dplyr para desvios padrão agrupados

Com o pacote dplyr, os cálculos agrupados ficam ainda mais legíveis. Use summarize() após o agrupamento:

library(dplyr) 

sales_data %>% 
   group_by(region) %>% 
   summarize(sd_amount = sd(amount))

Essa abordagem é especialmente útil para conjuntos de dados maiores ou para encadear várias transformações de dados. (Ou se você simplesmente preferir usar o operador pipe, como eu faço).

Erros comuns e dicas

Até mesmo uma função simples como sd() pode causar problemas se você não for cuidadoso. Aqui estão algumas armadilhas comuns:

  • Dados não numéricos: sd() só funciona com vetores numéricos. Se seus dados incluírem caracteres ou fatores, você receberá um erro. Use o site is.numeric() para verificar seus dados.

  • Valores ausentes: Um único NA fará com que sd() retorne NA. Sempre use na.rm = TRUE se você quiser ignorar os valores ausentes.

  • Pequenos tamanhos de amostra: sd() usa n-1 no denominador (desvio padrão da amostra). Para vetores de comprimento 1, sd() retorna NA, e não 0.

Acho que esse último erro, em particular, é interessante. Essa é uma diferença pouco conhecida e pode atrapalhá-lo se você estiver transferindo do Python para o R, pois o Python divide pelo desvio padrão da população, não da amostra.

Variações úteis e funções relacionadas no R

O R oferece várias funções relacionadas para medir a variabilidade e resumir os dados:

  • var(): Calcula a variação, que é o quadrado do desvio padrão.

  • apply(), sapply(), lapply(): Útil para aplicar o sd() em linhas ou colunas de matrizes e quadros de dados.

  • mad(): Calcula o desvio absoluto mediano, que é outra medida interessante e mais robusta de variabilidade.

Deixe-me mostrar a você sd() usado com apply(), já que mencionei: Veja como você pode usar o site apply() para obter o desvio padrão de cada coluna em uma matriz. Como antes, criarei essa matriz em tempo real.

measurement_matrix <- matrix(1:9, nrow = 3) 
apply(measurement_matrix, 2, sd)

Isso retorna o desvio padrão de cada coluna, dando a você uma visão geral rápida da variabilidade em várias variáveis.

Conclusão

A função sd() no R é relativamente simples (é apenas uma linha de código). Mas se você estiver usando-o em relatórios ou apresentações e não souber muito bem os detalhes, inscreva-se em nosso programa de carreira Statistician in R. Há muitas nuances nas estatísticas e na análise de dados, portanto, certifique-se de que você esteja bem informado.


Josef Waples's photo
Author
Josef Waples
Tópicos

Aprenda R com a DataCamp

Programa

R Programming Fundamentals

0 min
Level-up your R programming skills! Learn how to work with common data structures, optimize code, and write your own functions.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O que é o R? Introdução à poderosa linguagem de computação estatística

Aprenda tudo o que você precisa saber sobre a linguagem de programação R e descubra por que é a linguagem mais usada na ciência de dados.
Summer Worsley's photo

Summer Worsley

15 min

Tutorial

Como calcular o desvio padrão no Excel

Para calcular o desvio padrão no Excel, insira seus dados em um intervalo de células e use =STDEV.S() para dados de amostra ou =STDEV.P() para dados de população.
Arunn Thevapalan's photo

Arunn Thevapalan

10 min

Tutorial

Testes T no tutorial do R: Saiba como realizar testes T

Determine se há uma diferença significativa entre as médias dos dois grupos usando t.test() no R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

multiple linear regression

Tutorial

Regressão linear múltipla no R: Tutorial com exemplos

Uma visão geral completa para entender as regressões lineares múltiplas no R por meio de exemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial do K-Means Clustering no R

Saiba o que é o k-means e descubra por que ele é um dos algoritmos de agrupamento mais usados na ciência de dados
Eugenia Anello's photo

Eugenia Anello

8 min

Tutorial

Como fazer um histograma ggplot2 no R

Aprenda a criar um histograma ggplot2 no R. Crie histogramas no R com base na gramática dos gráficos.

Kevin Babitz

15 min

Ver maisVer mais