使用已定义的映射将R中的字符列替换为数字列

时间:2015-02-01 07:49:45

标签: r mapping dplyr tidyr

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

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

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

1 个答案:

答案 0 :(得分:0)

让我们说grades是您的data.frame,其中包含学校提供的每个课程的每个年级的记录,其中包括过去10年的字段(成绩,学生ID,班级编号),以及{{1} }是一个列表,每个学生有一条记录,其中包含在同一时间段内上学的学生的所有姓名和ID。

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

您可以通过调用

来使用dplyr从名册中推送学生姓名
roster

左连接将包括表library(dplyr) gradesWithStudentNames <- grades %>% left_join(select(roster,studentID,studentName), by=`studentID') 的每一行,即使grades中没有匹配的学生(在这种情况下,学生姓名将丢失)。使用roster将省略此类记录,inner_join将包含outer_join中未参加任何课程(缺少班级编号和等级)的学生的记录。

我建议你阅读标题为“双桌动词”的小插图。它描述了各种连接,可以使用roster

找到