按SchoolID为每位学生匹配并重复Distance列值
匹配学生对应学校距离的解决方案
你可以用以下两种常用方法实现需求,将rep中的Distance根据SchoolID匹配到stud的每条学生记录中:
方法一:基础R的merge函数
使用基础R自带的merge函数进行左连接,确保保留所有学生记录:
# 执行左连接匹配 result <- merge(stud, rep, by = "SchoolID", all.x = TRUE) # 查看结果 print(result)
注:all.x = TRUE参数会保留stud里的所有条目,对于rep中没有对应SchoolID的学生(比如SchoolID=5的Kobe和Shaq),Distance列会填充为NA。
方法二:dplyr包的left_join函数
如果习惯使用tidyverse工具链,可以用dplyr的left_join实现更直观的管道操作:
# 先加载dplyr包(若未安装需先运行install.packages("dplyr")) library(dplyr) # 通过管道完成匹配 result <- stud %>% left_join(rep, by = "SchoolID") # 查看结果 print(result)
注:left_join默认保留左表(stud)的所有记录,自动匹配右表(rep)的对应数据,无匹配项时填充NA。
最终结果示例
运行上述代码后,result数据框会呈现如下结构:
SchoolID Student Name Distance 1 1 Jay 164 2 1 Karen 164 3 1 Jorge 164 4 2 Jonas 157 5 2 Leo 157 6 3 Pedro 302 7 4 Carol 505 8 4 Julia 505 9 4 Adam 505 10 5 Kobe NA 11 5 Shaq NA
内容的提问来源于stack exchange,提问作者Pedro Leo
相关产品推荐
相关产品推荐

