Примечание. Заголовок этого вопроса был отредактирован, чтобы сделать его каноническим вопросом для проблем, когда функции plyr
маскируют свои копии dplyr
. Остальная часть вопроса остается неизменной.
Предположим, что у меня есть следующие данные:
dfx <- data.frame(
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54)
)
С добрым старым plyr
я могу создать небольшую таблицу, суммирующую мои данные со следующим кодом:
require(plyr)
ddply(dfx, .(group, sex), summarize,
mean = round(mean(age), 2),
sd = round(sd(age), 2))
Результат выглядит следующим образом:
group sex mean sd
1 A F 49.68 5.68
2 A M 32.21 6.27
3 B F 31.87 9.80
4 B M 37.54 9.73
5 C F 40.61 15.21
6 C M 36.33 11.33
Я пытаюсь переместить мой код в dplyr
и %>%
. Мой код принимает DF, затем группирует его по группе и полу, а затем суммирует его. То есть:
dfx %>% group_by(group, sex) %>%
summarise(mean = round(mean(age), 2), sd = round(sd(age), 2))
Но мой вывод:
mean sd
1 35.56 9.92
Что я делаю неправильно?
Спасибо!