R 匹配两个数据帧的两列之间的值,并使用另一列的值创建一个新列
我有下面的两个数据帧R 匹配两个数据帧的两列之间的值,并使用另一列的值创建一个新列,r,R,我有下面的两个数据帧 name<-c("Adam","Bill","Jack") value<-c(3,2,1) n<-data.frame(name,value) name value 1 Adam 3 2 Bill 2 3 Jack 1 id<-c("Adam","Adam&quo
name<-c("Adam","Bill","Jack")
value<-c(3,2,1)
n<-data.frame(name,value)
name value
1 Adam 3
2 Bill 2
3 Jack 1
id<-c("Adam","Adam","Bill","Jack","Jack")
group<-c("A","A","A","B","B")
e<-data.frame(id,group)
id group
1 Adam A
2 Adam A
3 Bill A
4 Jack B
5 Jack B
只保留e和merge的唯一行
使用dplyr:
您可以使用match:
我们可以使用data.table
name value group
1 Adam 3 A
2 Bill 2 A
3 Jack 1 B
merge(n, unique(e), by.x = 'name', by.y = 'id')
# name value group
#1 Adam 3 A
#2 Bill 2 A
#3 Jack 1 B
library(dplyr)
n %>% inner_join(distinct(e), by = c('name' = 'id'))
n$group <- e$group[match(n$name, e$id)]
n
# name value group
#1 Adam 3 A
#2 Bill 2 A
#3 Jack 1 B
library(data.table)
setDT(n)[unique(e), on = .(name = id)]
# name value group
#1: Adam 3 A
#2: Bill 2 A
#3: Jack 1 B