我有两个不同维度的数据集,我想在一个新变量中附加一个相等行的值。
> data
a b
1 TR123 P823
2 TR123 P842
3 TR456 P846
4 TR456 P904
> data2
d f c
1 TR456 P846 UN
2 P904 TR456 REL
3 P904 TR453 REL
我想有这样的数据:
> data
a b c
1 TR123 P823 NA
2 TR123 P842 NA
3 TR456 P846 UN
4 TR456 P904 REL
我尝试使用ifelse,apply或for循环来解决我的问题,但它不起作用。 例如:
data$c<-ifelse(data$a==data2$d&data$b==data2$f, data2$c,
ifelse(data$a==data2$f&data$b==data2$d,data2$c, NA))
我期待着您的建议!
答案 0 :(得分:-1)
您可以尝试以下操作:
data=tibble(a=c("TR123","TR123","TR456","TR456"),b=c("P823 ","P842","P846","P904"))
data2=tibble(a=c("TR456","P904","P904"),b=c("P846","TR456","TR453"),c=c("UN","REL","REL"))
dataRows=((data$a %in% data2$a | data$a %in% data2$b)&(data$b %in% data2$a| data$b %in% data2$b))%>%which()
data2Rows=((data2$a %in% data$a | data2$a %in% data$b)&(data2$b %in% data$a| data2$b %in% data$b))%>%which()
data$c<-NA
data$c[dataRows]<-data2$c[data2Rows]
> data
# A tibble: 4 x 3
a b c
<chr> <chr> <chr>
1 TR123 "P823 " NA
2 TR123 P842 NA
3 TR456 P846 UN
4 TR456 P904 REL