r-如何合并两个数据帧并提取列的唯一组合



我有两个数据帧。第一个是参考df,看起来像这样:

var1 var2
a e
b z
c f
d h

在基R:中

s <- apply(univ, 1, (x) paste(sort(x), collapse = " "))
r <- paste(ref$var1, ref$var2)
univ[match(r, s), ]
sym1  sym2 
1 e     a    
2 b     z    
3 f     c    
4 NA    NA   

在一个单独的tidyverse友好管道中:

library(stringr)
library(dplyr)
univ %>% 
rowwise() %>% 
mutate(s = str_c(sort(c_across(everything())), collapse = "")) %>% 
pull(s) %>% 
match(str_c(ref$var1, ref$var2), .) %>% 
univ[., ]

A基本R一行

ref[is.na(do.call(match, lapply(list(unname(ref), unname(univ)), apply, 1, sort, simplify = FALSE))), ] <- NA

给出

> ref
# A tibble: 4 × 2
var1  var2
<chr> <chr>
1 a     e
2 b     z
3 c     f
4 NA    NA

最新更新