我有两个数据框,每个数据框有2列.例如:
df.1 = data.frame(col.1 = c("a","a","a","a","b","b","b","c","c","d"), col.2 = c("b","c","d","e","c","d","e","d","e","e"))
df.2 = data.frame(col.1 = c("b","b","b","a","a","e"), col.2 = c("a","c","e","c","e","c"))
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种有效的方法来查找每个col.1 col.2行对df.1的df.2中的行索引.请注意,df.1中的行对可能以相反的顺序出现在df.2中(例如df.1 [1,],即"a","b"出现在df.2 [1,]中为"b" ","一个").这对我来说无关紧要.换句话说,只要df.1中的行对以df.2中的任何顺序出现,我希望它的行索引在df.2中,否则它应该返回NA.还有一点需要注意,两个数据帧中的行对都是唯一的 - 这意味着每个行对只出现一次.
因此对于这两个数据帧,返回向量将是:
c(1,4,NA,5,2,NA,3,NA,6,NA)
Run Code Online (Sandbox Code Playgroud)
也许使用dplyr包的东西:
row_number()有效地按行指数编号. select"翻转"列瓦尔.两半:
df_ref_top <- df.2 %>% mutate(n=row_number())
df_ref_btm <- df.2 %>% select(col.1=col.2, col.2=col.1) %>% mutate(n=row_number())
Run Code Online (Sandbox Code Playgroud)
然后绑在一起:
df_ref <- rbind(df_ref_top,df_ref_btm)
Run Code Online (Sandbox Code Playgroud)
给你的答案
left_join(df.1,df_ref)$n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |