Calculate the Standard Deviation in R

Your goal

You need to calculate the standard deviation of a numerical dataset in R.

Step-by-step tutorial

For the sample standard deviation, use the sd function from the stats package.

library(stats)

The specific approach depends on the data representation.

Vector data

Use sd to get the sample standard deviation for vector data:

> sd(c(3, 1, 4, 1, 5, 9, 2, 6, 5, 3))
[1] 2.469818

Data frame

Here's how to get the sample standard deviation for a data frame column:

> precip.df <- read.csv("precip-central-park.csv")
> head(precip.df)
  YEAR  JAN  FEB  MAR  APR  MAY  JUN  JUL  AUG  SEP  OCT  NOV  DEC ANNUAL
1 1869 2.53 6.87 4.61 1.39 4.15 4.40 3.20 1.76 2.81 6.48 2.03 5.02  45.25
2 1870 4.41 2.83 3.33 5.11 1.83 2.82 3.76 3.07 2.52 4.97 2.42 2.18  39.25
3 1871 2.07 2.72 5.54 3.03 4.04 7.05 5.57 5.60 2.34 7.50 3.56 2.24  51.26
4 1872 1.88 1.29 3.74 2.29 2.68 2.93 7.83 6.29 2.95 3.35 4.08 3.18  42.49
5 1873 5.34 3.80 2.09 4.16 3.69 1.28 4.61 9.56 3.14 2.73 4.63 2.96  47.99
6 1874 5.33 2.04 2.12 8.77 2.24 2.78 5.06 2.43 8.24 1.70 2.30 2.82  45.83
> sd(precip.df[, "JUL"])
[1] 2.246024

Tibble

Here's how to get the sample standard deviation for a tibble column:

> library(readr)
> precip.tbl <- read_csv("precip-central-park.csv")
Parsed with column specification:
cols(
  YEAR = col_double(),
  JAN = col_double(),
  FEB = col_double(),
  MAR = col_double(),
  APR = col_double(),
  MAY = col_double(),
  JUN = col_double(),
  JUL = col_double(),
  AUG = col_double(),
  SEP = col_double(),
  OCT = col_double(),
  NOV = col_double(),
  DEC = col_double(),
  ANNUAL = col_double()
)
> sd(precip.tbl[, "JUL"])
[1] 2.246024