【发布时间】:2022-01-17 03:46:21
【问题描述】:
我有两个数据框。一个是一组 ≈4000 个条目,看起来与此类似:
| grade_col1 | grade_col2 |
| --- | --- |
| A-| A-|
| B | 86|
| C+| C+|
| B-| D |
| A | A |
| C-| 72|
| F | 96|
| B+| B+|
| B | B |
| A-| A-|
另一个是一组 ≈700 个条目,看起来与此类似:
| grade | scale |
| --- | --- |
| A+|100|
| A+| 99|
| A+| 98|
| A+| 97|
| A | 96|
| A | 95|
| A | 94|
| A | 93|
| A-| 92|
| A-| 91|
| A-| 90|
| B+| 89|
| B+| 88|
...等等。
我要做的是创建一个新列,显示grade_col2 是否与grade_col1 与二进制0-1 输出匹配(0 = 不匹配,1 = 匹配)。 Grade_col2 的大部分以字母等级显示。但是每隔一段时间,grade_col2 中的一个条目就会被意外地输入为数字等级。即使grade_col2 是数字等级而不是字母等级,我也希望此匹配列给我一个“1”。换句话说,如果grade_col1 是B 而grade_col2 是86,我希望这仍然被读作匹配。只有当grade_col1 为F 且grade_col2 为96 时,这不 才匹配(类似于grade_col1 为B- 且grade_col2 为D = 不匹配)。
第二个数据框给了我需要在一个和另一个之间转换的信息(97-100 之间的条目是 A+,93-96 之间是 A,等等)。我只是不知道如何运行一个脚本,该脚本使用此信息在所有 ≈4000 个条目中查找匹配项。理论上,我可以手动执行此操作,但实际数据集太长以至于不现实。
我一直在考虑在 dplyr 中使用嵌套的 if_else 语句。但是一旦我通过了第一个“if”语句,我就卡住了。对此人能提供的任何帮助,我将不胜感激。
【问题讨论】:
-
看看
dplyr::case_when