如何解决如何使用 R 中的其他两个表创建一个表?
我有两张桌子。一个叫做enrollment
,另一个叫做students
。
报名
student_id class_id
004 compsci
010 compsci
002 engli
010 engli
003 engli
学生:
student_id first_name
002 Abril
004 Chris
010 Davis
003 Riley
我需要一个像下面这样的输出表,其中只有 class_id
和 first_name
出现在上面两个表中 student_id
和 first_name
的匹配中。
class_id first_name
compsci Davis
compsci Chris
engli Abril
engli Davis
engli Riley
数据:
enrollment<-data.frame(student_id=(c(004,010,002,003)),class_id=(c("compsci","compsci","engli","engli")))
student<-data.frame(student.id=c(002,004,003),first_name=(c("Abril","Chris","Davis","Riley")))
解决方法
您可以使用 merge
命令,即:
colnames(student)[1] <- 'student_id'
joined <- merge(enrollment,student,by='student_id')
joined <- joined[,c('class_id','first_name')]
,
使用dplyr
:
library(dplyr)
#Code
new <- student %>% left_join(enrollment,by = c('student.id'='student_id')) %>% select(-student.id)
输出:
first_name class_id
1 Abril engli
2 Chris compsci
3 Davis compsci
4 Davis engli
5 Riley engli
,
您也可以使用 data.table
方法:
setDT(enrollment)[student,first_name := i.first_name,on=.(student_id==student.id)][,-'student_id']
class_id first_name
<char> <char>
1: compsci Chris
2: compsci Davis
3: engli Abril
4: engli Davis
5: engli Riley
,
我们可以使用 match
中的 base R
enrollment$first_name <- student$first_name[match(enrollment$student_id,student$student.id)]
enrollment[c('class_id','first_name')]
-输出
# class_id first_name
#1 compsci Chris
#2 compsci Davis
#3 engli Abril
#4 engli Davis
#5 engli Riley
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。