R-基于两列查找并列出重复行

R-基于两列查找并列出重复行,r,R,使用R.Base包、dplyr或data.table对我来说都可以使用。我的数据约为1000行x 20列。我预计大约有300份 我想做如下事情,但有一个改动: 我想找到,不是完全重复的行,而是在两列中重复的行。 例如,给定此输入表: File T.N ID Col1 Col2 BAI.txt T 1 sdaf eiri BAJ.txt N 2 fdd fds BBK.txt T 1

使用R.Base包、dplyr或data.table对我来说都可以使用。我的数据约为1000行x 20列。我预计大约有300份

我想做如下事情,但有一个改动:

我想找到,不是完全重复的行,而是在两列中重复的行。 例如,给定此输入表:

File     T.N     ID     Col1     Col2
BAI.txt   T      1       sdaf    eiri
BAJ.txt   N      2       fdd     fds
BBK.txt   T      1       ter     ase
BCD.txt   N      1       twe     ase
如果我只想在T.N&ID中找到重复项,我会得到下表:

File     T.N     ID     Col1     Col2
BAI.txt   T      1       sdaf    eiri
BBK.txt   T      1       ter     ase

只需使用所选列创建要在其上子集的索引

data<-read.csv()
data<-data[which(duplicated(data[,c('T.N','ID")])==T),]

data这里有一个选项,使用
duplicated
两次,第二次以及
fromLast=TRUE
选项,因为它仅从上一个重复值返回TRUE

dupe = data[,c('T.N','ID')] # select columns to check duplicates
data[duplicated(dupe) | duplicated(dupe, fromLast=TRUE),]

#     File T.N ID Col1 Col2
#1 BAI.txt   T  1 sdaf eiri
#3 BBK.txt   T  1  ter  ase

我发现这是一种简单而有用的方法

tr <- tribble(~File,     ~TN,     ~ID,    ~Col1,     ~Col2,
              'BAI.txt',   'T',      1,       'sdaf',    'eiri',
              'BAJ.txt',   'N',     2,      'fdd',     'fds',
              'BBK.txt',   'T',      1,       'ter',     'ase',
              'BCD.txt',   'N',      1,       'twe',     'ase')

group_by(tr, TN, ID) %>% 
  filter(n() > 1)
tr%
过滤器(n()>1)
输出:

# A tibble: 2 x 5
# Groups:   TN, ID [1]
  File    TN       ID Col1  Col2 
  <chr>   <chr> <dbl> <chr> <chr>
1 BAI.txt T         1 sdaf  eiri 
2 BBK.txt T         1 ter   ase  
#一个tible:2 x 5
#分组:TN,ID[1]
文件TN ID Col1 Col2
1 BAI.txt T 1 sdaf eiri
2 BBK.txt T 1之三

一个简单的解决方案是
hablar

library(dplyr)
library(data.table)
library(hablar)

df <- fread("
  File     T.N     ID     Col1     Col2
  BAI.txt   T      1       sdaf    eiri
  BAJ.txt   N      2       fdd     fds
  BBK.txt   T      1       ter     ase
  BCD.txt   N      1       twe     ase
            ")

df %>% 
  find_duplicates(T.N, ID)
库(dplyr)
库(数据表)
图书馆(hablar)
df%
查找重复项(T.N,ID)
它返回T.N和ID中包含重复项的行:

  File    T.N      ID Col1  Col2 
  <chr>   <chr> <int> <chr> <chr>
1 BAI.txt T         1 sdaf  eiri 
2 BBK.txt T         1 ter   ase 
文件T.N ID Col1 Col2
1 BAI.txt T 1 sdaf eiri
2 BBK.txt T 1之三

这很有效。你忘了一个右括号。数据结果并不完全符合OPS的要求。这是迄今为止唯一一个似乎不会以随机单打结束的结果。其他人似乎对ID列是否匹配有问题,但T.N列不匹配(当我尝试真实数据时)。