【发布时间】:2019-05-07 22:07:29
【问题描述】:
我正在尝试使用一个数据集来清理另一个数据集。
我有一个名为MiscodedVisits的(人为错误)课程名称错误编码的数据框
# A tibble: 3 x 3
EMAIL SemesterYear Course
<chr> <chr> <chr>
1 aap@fn.edu S16 CHM212
2 aar@fn.edu S14 PHY000
3 abc@fn.edu F17 PHY000
我当然有一个名为Rosters 的数据框。
# A tibble: 5 x 3
EMAIL SemesterYear Course
<chr> <chr> <chr>
1 aap@fn.edu S17 CHM212
2 aap@fn.edu S16 CHM112
3 aar@fn.edu S14 PHY222
4 abc@fn.edu F17 AST300
5 abc@fn.edu F17 MAT255
我想在Rosters(EMAIL 和SemesterYear)中查找错误编码的Course,以便根据代表课程的Course 字符串的部分匹配添加CorrectedCourse(CHM 、PHY等)
我想要的结果是 MiscodedVisits 看起来像:
# A tibble: 3 x 4
EMAIL SemesterYear Course CorrectedCourse
<chr> <chr> <chr> <chr>
1 aap@fn.edu S16 CHM212 CHM112
2 aar@fn.edu S14 PHY000 PHY222
3 abc@fn.edu F17 PHY000 NA
我试过了:
A. 根据Rosters$Course 的字符串匹配,在MiscodedVisits 中改变一个新列CorrectedCourse。 mutate(CorrectedCourse = DemoPerf$Course [match(EMAIL, DemoPerf$EMAIL) & match(SemesterYear, DemoPerf$SemesterYear)] )
语法失败 Error in match(EMAIL, DemoPerf$EMAIL) : object 'EMAIL' not found
B. fuzzy_inner_join (MiscodedVisits, Rosters, by= c(Course = "S\\d{2}"), match_fun = str_detect) 错误:Error: Columncolmust be a 1d atomic vector or a list
C. regex_inner_join (MiscodedVisits, Rosters, by= c(Course = "S\\d{2}")) 错误:Error: Columncolmust be a 1d atomic vector or a list
【问题讨论】: