1)我想计算一下我的学生可以说出5个特定单词的次数(每个学生都有自己的字符串)。
2)我想创建另一列来说明学生的回答是否按照正确的顺序(正确的顺序=“绿色-黄色-橙色-红色-黑色”)。
3)我还想创建一列来计算学生犯下的ORDER错误数。
所有数据均使用小写字母,每一项用“-”分隔。有时人们会重复单词(例如,他们有两个答案“红色”和“非常红色”),“红色”应该有一个要点,而“非常红色”则没有。我也不想为包含正确字符串“ red”的单词“ reddest”奖励积分。每个学生给出的答案数量(五分之三)是可变的,范围从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个字词的答案应扣除一点。我已经可以通过执行以下操作获得count列:
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)))
但是,我正在努力计算检测订单是否正确以及发生了多少订单错误的列。
请注意,我三个月前问过类似的问题,但没有得到我一直追求的解决方案