我做了一些搜索但找不到问题的答案。
假设我有一个整数和其他列中包含student_id
列的数据框。我还有另一个包含两列的映射表,第一列是student_id
,第二列是student_name
。用student_id
替换student_name
列的最佳方法是什么?请注意,映射表是唯一的,但数据框可以有多个相同的学生ID。
如果有帮助,我正在使用dplyr
和tidyr
个包。
答案 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