使用R. Base包,dplyr或data.table都可以使用。我的数据是~1000行×20列。我期待大约300个重复。
我想做类似以下的事情,但有一个改动:
Match/group duplicate rows (indices)
我想找到,不是完全重复的行,而是在两列中重复的行。 例如,给定此输入表:
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& amp;中查找重复项仅限ID,我最终会得到下表:
File T.N ID Col1 Col2
BAI.txt T 1 sdaf eiri
BBK.txt T 1 ter ase
答案 0 :(得分:13)
以下是使用duplicated
两次的选项,第二次使用fromLast = TRUE
选项,因为它仅从重复值on-wards返回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
答案 1 :(得分:3)
只需使用选定的列创建要在
上进行子集化的索引data<-read.csv()
data<-data[which(duplicated(data[,c('T.N','ID")])==T),]
答案 2 :(得分:2)
我发现这是一种简单而有用的方法。
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)
输出:
# 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
答案 3 :(得分:0)
一个简单的解决方案是find_duplicates
中的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)
返回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