查找数据帧的重复行以及重复行在R中对应的原始行
我的数据框看起来像:查找数据帧的重复行以及重复行在R中对应的原始行,r,duplicates,R,Duplicates,我的数据框看起来像: 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表示不重复的行) 我天真的做法是: dupTF <- duplicated(data) DupDat <- data[dupTF,] index0 <- rep(NA,nrow(DupDat)) f
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表示不重复的行)
我天真的做法是:
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
dupTF我可能会使用数据.table,因为它的.I
和.N
变量(可从每个by
组中获得)使这一点非常简单:
library(data.table)
dt <- data.table(data)
dt[, XX:=c(NA, rep(.I[1], .N-1)), by=c("a","b")][,XX]
# [1] NA NA NA NA 4 1
库(data.table)
dt这是这个问题的前一个问题。@User7598恐怕他们没有回答我的问题。前面的回答是关于如何返回dataframe的非重复行。我的问题是如何返回重复行对应的原始数据集的索引。我不知道data.table。谢谢。你能告诉我我指的是什么吗?@ThePrincess——对于每组行,。I
给出这些行的行索引——相对于整个data.frame。因此,例如,对于同时具有a=3
和b=3
的行组(即第1行和第5行),.i
是c(1,5)
<因此,code>.I[1]
返回该组中第一次出现的行的索引。
library(data.table)
dt <- data.table(data)
dt[, XX:=c(NA, rep(.I[1], .N-1)), by=c("a","b")][,XX]
# [1] NA NA NA NA 4 1