Рассчитать зависимость стандартного отклонения в R

Я хочу вычислить стандартное отклонение в R. Но стандартная функция "sd(x)" не та функция, которая мне нужна. Я ищу функцию для вычисления sd(x, в зависимости от другой переменной в моем фрейме данных). Так что я могу добавить новый столбец с sd через переменную зависимости (изображение). Как это:

image   answer    sd
a       1         0,70
a       2         0,70
b       2         2,12
b       5         2,12

2 ответа

Функция ave идеально подходит для этого.

dat <- read.table(text = "
image   answer    sd
a       1         0,70
a       2         0,70
b       2         2,12
b       5         2,12
", header = TRUE, dec = ",")

ave(dat$answer, dat$image, FUN = sd)
#[1] 0.7071068 0.7071068 2.1213203 2.1213203

РЕДАКТИРОВАТЬ.
Следуя диалогу с Генри в комментариях, я решил отредактировать ответ. К счастью, с тех пор я понял, что исходный набор данных использует запятую в качестве десятичной точки.
Итак, первое изменение, чтобы включить аргумент dec = "," в read.table выше.
Второе изменение, чтобы показать полное решение с колонкой sd созданный ave инструкция.

dat2 <- dat[-3]  # start with the OP's data without the 3rd column
dat2$sd <- ave(dat2$answer, dat2$image, FUN = sd)
dat2
#  image answer        sd
#1     a      1 0.7071068
#2     a      2 0.7071068
#3     b      2 2.1213203
#4     b      5 2.1213203

Я понял, что вы хотите стандартное отклонение ответа для каждого изображения. Вы можете сгруппировать ваш df по изображению, а затем использовать sd, который будет рассчитывать отдельно для каждой группы, используя dplyr.

df <- data.frame(image = c('a', 'a', 'b', 'b'),
                 answer = c(1, 2, 2, 5))

library(dplyr)    
df %>%
        group_by(image) %>%
        mutate(sd = sd(answer))
Другие вопросы по тегам