R 查找A中与B中的行匹配的行号
我想知道A中与B中的行匹配的行的索引 A和B都是数据帧。为简单起见,假设:R 查找A中与B中的行匹配的行号,r,dataframe,R,Dataframe,我想知道A中与B中的行匹配的行的索引 A和B都是数据帧。为简单起见,假设: a1 <- data.frame(a = 1:5, b=letters[1:5]) a2 <- data.frame(a = 1:3, b=letters[1:3]) a1在plyr包中的join.keys函数为一对输入数据帧中的每个唯一行提供一个键,这使得确定a中的哪些行出现在B中变得非常简单。在由join.keys返回的列表中,x是第一个数据帧的行标识符向量,y是第二个数据帧的行标识符向量 librar
a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])
a1在plyr
包中的join.keys
函数为一对输入数据帧中的每个唯一行提供一个键,这使得确定a
中的哪些行出现在B
中变得非常简单。在由join.keys
返回的列表中,x
是第一个数据帧的行标识符向量,y
是第二个数据帧的行标识符向量
library(plyr)
with(join.keys(a1, a2), which(x %in% y))
# [1] 1 2 3
您可以使用以下代码:
>subset(a1,a1$a %in% a2$a)
它返回:
>1 a
>2 b
>3 c
如果只需要a列,可以添加:
>subset(a1,a1$a %in% a2$a,a)
>1
>2
>3
我认为在你的数据上这样做会很快。你有矩阵吗?数据帧?还有别的吗?请共享有效的R代码以生成示例数据,例如,A=matrix(c(1,3,2,4),nrow=2)
或者A=data.frame(v1=c(1,3),v2=c(2,4))
。同样,对于B
。请编辑您的问题以使用此信息进行更新,不要将其放在评论中。如果您对再现性有其他疑问,可能是匹配(粘贴(B[,1],B[,2],sep=“*”),粘贴(A[,1],A[,2],sep=“*”))
。如果您想得到更多猜测的答案,请提供您的数据样本。如果我的矩阵有两列以上,该怎么办?@j20120307无论列数多少,都可以不做修改。行标识符在这里是什么意思?我将c(“V1”、…、“V18”)作为两个数据帧的标头。每行是一个数据点,每个数据点有18个要素。@j20120307如果两行的所有18个要素的数据相同,则它们将具有相同的行标识符;否则,它们将具有不同的行标识符。谢谢,这很有效。如果我想知道A中对应的行号,而B中的行与A中的行匹配,该怎么办?如果A=[[1,2],[2,3],[3,6]]和B=[[2,4],[3,6]],那么它返回[NA,3]?