从 R 中的原始数据帧中找到子集数据帧的索引
Find the index of subset data frame from its original data frame in R
我在 R 中有一个数据框,这里说 a1 作为玩具示例,我有一个来自它的行子集,比如 a2。
我想找到原始子集索引(2,4)。
我尝试了 which 或 match,但没有成功。
set.seed(123)
a1=data.frame(x1=rnorm(5),x2=runif(5),x3=runif(5))
a2=a1[c(2,4),]
a2index=rep(NA,dim(a2)[1])
这是我的a1data.frame
a1
x1 x2 x3
1 -0.56047565 0.9568333 0.89982497
2 -0.23017749 0.4533342 0.24608773
3 1.55870831 0.6775706 0.04205953
4 0.07050839 0.5726334 0.32792072
5 0.12928774 0.1029247 0.95450365
a2 是 a1 的行子集:
a2
x1 x2 x3
2 -0.23017749 0.4533342 0.2460877
4 0.07050839 0.5726334 0.3279207
我设法使用双循环获得了索引。但是太慢了,有什么办法可以加快速度吗?
感谢您的帮助。
for (i in 1:dim(a2)[1] )
for (j in 1:dim(a1)[1])
if (all(a2[i,]==a1[j,])){
a2index[i]=j
break;
}
# return the index vector (2,4)
a2index``
你可以在转置你的数据帧后使用match
,这样它就可以column-wise进行比较。
match(as.data.frame(t(a2)), as.data.frame(t(a1)))
[1] 2 4
我在 R 中有一个数据框,这里说 a1 作为玩具示例,我有一个来自它的行子集,比如 a2。 我想找到原始子集索引(2,4)。
我尝试了 which 或 match,但没有成功。
set.seed(123)
a1=data.frame(x1=rnorm(5),x2=runif(5),x3=runif(5))
a2=a1[c(2,4),]
a2index=rep(NA,dim(a2)[1])
这是我的a1data.frame
a1
x1 x2 x3
1 -0.56047565 0.9568333 0.89982497
2 -0.23017749 0.4533342 0.24608773
3 1.55870831 0.6775706 0.04205953
4 0.07050839 0.5726334 0.32792072
5 0.12928774 0.1029247 0.95450365
a2 是 a1 的行子集:
a2
x1 x2 x3
2 -0.23017749 0.4533342 0.2460877
4 0.07050839 0.5726334 0.3279207
我设法使用双循环获得了索引。但是太慢了,有什么办法可以加快速度吗?
感谢您的帮助。
for (i in 1:dim(a2)[1] )
for (j in 1:dim(a1)[1])
if (all(a2[i,]==a1[j,])){
a2index[i]=j
break;
}
# return the index vector (2,4)
a2index``
你可以在转置你的数据帧后使用match
,这样它就可以column-wise进行比较。
match(as.data.frame(t(a2)), as.data.frame(t(a1)))
[1] 2 4