#r #dplyr
#r #dplyr
Вопрос:
Я хочу получить стандартное отклонение, сгруппированное по годам. Все примеры, которые я видел, не включают столбец агрегированного подсчета.
Я хочу использовать сумму столбца count как часть вычисления стандартного отклонения.
year count age
2018 2 0
2018 3 1
2018 4 2
2017 1 0
2017 4 1
2017 2 2
Ожидаемый ответ на вышеуказанное будет:-
Год 2018 = 0,78567420131839
2017 год = 0,63887656499994
Комментарии:
1. Что вы получаете
0.78567
за 2018 год? Можете ли вы объяснить вычисление?2. @RonakShah ОП использует MLE для дисперсии, а не R стандартную оценку моментов Пирсона.
3. Чтобы получить ответ на 2018 год, я просто расширил значения до 0,0,1,1,1,2,2,2,2, затем я подключил эти значения к calculator.net/… Я вижу, что при переходе от совокупности к выборке я получаю тот же ответ, что и @rjen
Ответ №1:
Следующее должно сработать.
library(dplyr)
library(purrr)
data <- tibble(year = c(2018, 2018, 2018, 2017, 2017, 2017),
count = c(2, 3, 4, 1, 4, 2),
age = c(0, 1, 2, 0, 1, 2))
data %>%
mutate(vec = map2(age, count, ~ rep(.x, .y))) %>%
group_by(year) %>%
mutate(concs = list(unlist(vec))) %>%
ungroup() %>%
mutate(age_sd = map_dbl(concs, sd)) %>%
select(-vec, -concs)
# year count age age_sd
# <dbl> <dbl> <dbl> <dbl>
# 1 2018 2 0 0.833
# 2 2018 3 1 0.833
# 3 2018 4 2 0.833
# 4 2017 1 0 0.690
# 5 2017 4 1 0.690
# 6 2017 2 2 0.690
Комментарии:
1. Привет, похоже, что это так, я получаю тот же ответ, когда я подключаю значения к онлайн-калькулятору в режиме выборки, а не совокупности.