计算字符串中以特定顺序出现的特定单词

时间:2019-10-11 19:08:12

标签: r string stringr detect

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)))

但是,我正在努力计算检测订单是否正确以及发生了多少订单错误的列。

请注意,我三个月前问过类似的问题,但没有得到我一直追求的解决方案

0 个答案:

没有答案