用定义的映射用 R 中的字符列替换数字列

replace a numerical column by a character column in R with a defined mapping

我进行了一些搜索,但找不到问题的答案。

假设我有一个数据框,其中有一个整数列 student_id 和其他一些列。我还有另一个包含两列的映射 table,第一列是 student_id,第二列是字符串形式的 student_name。用 student_name 替换 student_id 列的最佳方法是什么?请注意,映射 table 是唯一的,但数据框可以有多个相同的学生 ID。

如果有帮助,我正在使用 dplyrtidyr 包。

让我们说 grades 是你的 data.frame,其中包含学校提供的每个 class 的每个成绩的记录,其中包含字段(年级、学生 ID、class 编号) 过去 10 年,roster 是一个列表,每个学生有一条记录,其中包含同一时间段内就读该学校的所有学生的姓名和 ID。

名册上每个学生有一条记录,成绩上每个学生有多条记录。

您可以通过调用

使用 dplyr 从花名册中推送学生姓名
library(dplyr)
gradesWithStudentNames <- 
        grades %>% 
        left_join(select(roster,studentID,studentName),
                  by=`studentID')

左连接将包括 table grades 的每一行,即使 roster 中没有匹配的学生(在这种情况下学生姓名将丢失)。使用 inner_join 将省略此类记录,而 outer_join 将包括 roster 中未参加任何 class 课程的学生的记录(class 的值缺失编号和年级)。

我建议阅读标题为 'Two-table Verbs' 的小插图,它描述了各种连接,可以使用 browseVignettes('dplyr')

找到