У меня есть data.frame в R, который содержит возрасты, длины и общее количество лиц в каждой группе длины. Я хочу получить среднее и стандартное отклонение длин для каждой возрастной группы, и я чувствую, что делать это с dplyr будет проще всего. Тем не менее, я не могу понять, как это сделать: gather()
этот конкретный набор данных. Вот данные:Использование сбора на уже собранном виде.frame в R
dat <- data.frame(age = sort(rep(1:5, 5)),
length = c(6:10, 8:12, 10:14, 12:16, 14:18),
total = sample(25:50, 50, replace=T))
, который выглядит следующим образом:
age length total
1 6 38
1 7 42
1 8 49
1 9 28
1 10 26
2 8 37
И я хочу, чтобы выглядеть следующим образом, так что я могу легко group_by(age) %>% summarize(mean = mean(length), sd = sd(length))
.
age length
1 6
1 6
1 6
1 6
1 6
и т.д. (т.е. должно быть 38 6s для возраста 1, 42 7s для возраста 1 и так далее).
Как достичь этого, используя функцию gather()
от tidyr? Кажется, я не могу это сделать. Рад услышать альтернативные предложения.
Я сделал что-то вроде этого, но при вычислении стандартного отклонения он становится немного более волосатым. : | – PaulFrater
См. '? Hmisc :: wtd.var'. 'Hmisc' также имеет' wtd.quantile', если вы находитесь в непараметрических мерах. – Benjamin