Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找数据帧的重复行以及重复行在R中对应的原始行_R_Duplicates - Fatal编程技术网

查找数据帧的重复行以及重复行在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