У меня есть пример набора данных, подобного этому:
id <- c(1,1,1, 2,2,2, 3,3, 4,4, 5,5,5,5, 6,6,6, 7, 8,8)
item.id <- c(1,1,2, 1,1,1 ,1,1, 1,2, 1,2,2,2, 1,1,1, 1, 1,2)
sequence <- c(1,2,1, 1,2,3, 1,2, 1,1, 1,1,2,3, 1,2,3, 1, 1,1)
score <- c(0,0,0, 0,0,1, 1,0, 1,1, 1,0,1,1, 0,0,0, 1, 0,1)
category <- c(2,2,2, 3,3,3, 1,1, 3,3, 1,1,1,1, 4,4,4, 2, 3,3)
data <- data.frame("id"=id, "item.id"=item.id, "sequence"=sequence, "score"=score, "category"=category)
> data
id item.id sequence score category
1 1 1 1 0 2
2 1 1 2 0 2
3 1 2 1 0 2
4 2 1 1 0 3
5 2 1 2 0 3
6 2 1 3 1 3
7 3 1 1 1 1
8 3 1 2 0 1
9 4 1 1 1 3
10 4 2 1 1 3
11 5 1 1 1 1
12 5 2 1 0 1
13 5 2 2 1 1
14 5 2 3 1 1
15 6 1 1 0 4
16 6 1 2 0 4
17 6 1 3 0 4
18 7 1 1 1 2
19 8 1 1 0 3
20 8 2 1 1 3
id
представляет людей, item.id
- для вопросов. sequence
- для попытки изменить ответ, а score
- балл по предмету, category
- категория, к которой относится каждый студент.
Я хочу захватитьМаксимальный порядковый номер для каждого id
на item.id
, затем рассчитайте средний балл максимального значения последовательности для каждого category
. Я смог выполнить первый шаг, но не смог понять, как взять кросс-таблицу среднего значения максимального порядкового номера на category
.
library(dplyr)
data %>%
group_by(id,item.id) %>%
summarize(max.seq = max(sequence))
# A tibble: 12 x 3
# Groups: id [?]
id item.id max.seq
<dbl> <dbl> <dbl>
1 1 1 2
2 1 2 1
3 2 1 3
4 3 1 2
5 4 1 1
6 4 2 1
7 5 1 1
8 5 2 3
9 6 1 3
10 7 1 1
11 8 1 1
12 8 2 1
Результат второго шага должен быть следующим:
category 1 2 3 4
mean(max(seq)) 2 1.33 1.4 3
Есть предложения?
Заранее спасибо!