1) Я хотел бы посчитать, сколько раз мои ученики могли указать 5 конкретных слов (у каждого ученика есть своя строка).
2) Я хотел бы создать еще один столбец, в котором указано,или нет ответы студентов были в правильном порядке (правильный порядок = "зеленый - желтый - оранжевый - красный - черный").
3) Я также хотел бы создать столбец, который подсчитывает количество ЗАКАЗАошибки, допущенные студентами.
Все данные указаны в нижнем регистре, и каждый член отделяется "-". Иногда люди повторяли слова (например, у них было два ответа: «красный» и «очень красный»), «красный» должен получить очко, а «очень красный» - нет. Я также не хочу начислять баллы за слова типа "reddest", которые содержат правильную строку "red". Количество ответов каждого студента из пяти было переменным, варьируясь от 0 до 6.
# Student responses
Id DF$Colors
1 green - yellow - orange - red - black
2 yellow - green - orange - reddest - black
3 red - violet - pink - black
4 purple - green - orange - red - black
5 blue - pink - yellow - scarlet
6 green - yellow - orange - red - very red - black
7 orange - green - yellow - red - black
8 orange - green - yellow - black - red
Результат, к которому я стремлюсь:
Id DF$Colors DF$CountCorr DF$CorrOrder DF$OrderMistakes
1 green - yellow - orange - red - black 5 TRUE 0
2 yellow - green - orange - reddest - black 4 FALSE 1
3 red - violet - pink - black 2 TRUE 1
4 purple - green - orange - red - black 4 TRUE 0
5 blue - pink - yellow - brown 1 NA NA
6 green - yellow - orange - red - very red - black 4* TRUE 0
7 orange - green - yellow - red - black 5 FALSE 2
8 orange - green - yellow - black - red 5 FALSE 3
* ответов сИз 6 сроков следует вычитать балл. Я смог получить столбец подсчета, выполнив это:
all_colors <- c("green", "yellow", "orange", "red", "black")
library(tidyverse)
DF <- DF %>%
left_join(DF %>%
separate_rows(Colors, sep = " - ") %>%
group_by(Id) %>%
summarise(CountCorr= max(sum(all_colors %in% unique(Colors))-
sum(duplicated(Colors)), 0)))
Однако я изо всех сил пытаюсь вычислить столбцы, которые определяют, правильный ли порядок, и сколько ошибок было допущено.
Обратите внимание, я задал похожий вопрос 3 месяца назад, но не получил решение, которое было после