【发布时间】:2015-02-16 00:02:02
【问题描述】:
我的数据框看起来像:
data <- data.frame(a=c(3,1,2,2,2,3),b=c(3,1,1,2,2,3))
duplicated(data)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
我想要的不仅是指示哪一行正在复制的逻辑字符串,而且是复制的行对应的原始行。在上面的示例中,第五行是原始数据帧中第四行的副本,第六行是原始数据帧中第一行的副本。所以我想要一个索引向量,如:
NA NA NA NA 4 1
(NA表示非重复行)。
我的幼稚做法是:
dupTF <- duplicated(data)
DupDat <- data[dupTF,]
index0 <- rep(NA,nrow(DupDat))
for (i in 1 : nrow(DupDat))
{
for (j in 1 : nrow(data))
{
if(all(data[j,] == DupDat[i,])) break;
}
index0[i] <- j
}
index <- rep(NA,length(dupTF))
index[dupTF]<- index0
index
[1] NA NA NA NA 4 1
但是,这种方法并不理想,因为它会遍历所有数据...
【问题讨论】:
-
这是以前的answer 这个问题。
-
@User7598 恐怕他们没有回答我的问题。这些先前的答案是关于如何返回数据帧的非重复行。我的问题是关于如何返回重复行对应的原始数据集的索引。
标签: r duplicates