Как вы получаете сводки для взвешенных результатов опроса?
Каждый раз, когда я пытаюсь это сделать, я получаю сообщение о том, что длины не совпадают.
library(tidyverse)
x <- tbl_df(data.frame("Age" = c(21,21,15,15,22,22,47,47,42,42,33,33,32,32),
"survey answer 1-10 scale" = c(1,10,3,6,5,4,8,1,10,3,6,5,4,8),
"weight" =c(.7,.8,.9,1,1.1,1.2,1.3,.7,.8,.9,1,1.1,1.2,1.3)))
print(x)
# # A tibble: 14 x 3
# Age survey.answer.1.10.scale weight
# <dbl> <dbl> <dbl>
# 1 21 1 0.7
# 2 21 10 0.8
# 3 15 3 0.9
# 4 15 6 1
# 5 22 5 1.1
# 6 22 4 1.2
# 7 47 8 1.3
# 8 47 1 0.7
# 9 42 10 0.8
# 10 42 3 0.9
# 11 33 6 1
# 12 33 5 1.1
# 13 32 4 1.2
# 14 32 8 1.3
x %>%
group_by(Age) %>%
summarise(weighted.mean(., w=.$weight, na.rm=TRUE))
Что возвращает:
Error in summarise_impl(.data, dots) :
Evaluation error: 'x' and 'w' must have the same length.
В другом ответе говорилось, что взвешенное означает только работу с матрицами? но это не имеет смысла. Даже когда я попробую, нет Буэно:
as.matrix(x)->mat.rx
mat.rx %>%
group_by(Age) %>%
summarise(weighted.mean(., w=.$weight, na.rm=TRUE))
, который возвращает:
Error in UseMethod("group_by_") :
no applicable method for 'group_by_' applied to an object of class "c('matrix'
, 'double', 'numeric')"