Рассчитать зависимость стандартного отклонения в 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))