过滤具有重复ID的行 [英] Filter rows having duplicate IDs
本文介绍了过滤具有重复ID的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的数据是这样的:
dat <- read.table(header=TRUE, text="
ID Veh oct nov dec jan feb
1120 1 7 47 152 259 140
2000 1 5 88 236 251 145
2000 2 14 72 263 331 147
1133 1 6 71 207 290 242
2000 3 7 47 152 259 140
2002 1 5 88 236 251 145
2006 1 14 72 263 331 147
2002 2 6 71 207 290 242
")
dat
ID Veh oct nov dec jan feb
1 1120 1 7 47 152 259 140
2 2000 1 5 88 236 251 145
3 2000 2 14 72 263 331 147
4 1133 1 6 71 207 290 242
5 2000 3 7 47 152 259 140
6 2002 1 5 88 236 251 145
7 2006 1 14 72 263 331 147
8 2002 2 6 71 207 290 242
通过使用duplicated
函数:
dat[!duplicated(dat[,1]),]
ID Veh oct nov dec jan feb
1 1120 1 7 47 152 259 140
2 2000 1 5 88 236 251 145
4 1133 1 6 71 207 290 242
6 2002 1 5 88 236 251 145
7 2006 1 14 72 263 331 147
第1列中的单元格重复
dat[duplicated(dat[,1]),]
ID Veh oct nov dec jan feb
3 2000 2 14 72 263 331 147
5 2000 3 7 47 152 259 140
8 2002 2 6 71 207 290 242
但是我想用first row
保留该行,如下所示(我正在努力编写代码):
But I want to keep the row with first row
like the following (which I am struggling to code):
ID Veh oct nov dec jan feb
2000 1 5 88 236 251 145
2000 2 14 72 263 331 147
2000 3 7 47 152 259 140
2002 1 5 88 236 251 145
2002 2 6 71 207 290 242
推荐答案
尝试
dat[duplicated(dat[,1])|duplicated(dat[,1],fromLast=TRUE),]
# ID Veh oct nov dec jan feb
#2 2000 1 5 88 236 251 145
#3 2000 2 14 72 263 331 147
#5 2000 3 7 47 152 259 140
#6 2002 1 5 88 236 251 145
#8 2002 2 6 71 207 290 242
或
library(data.table)
setDT(dat)[, .SD[.N>1], ID]
这篇关于过滤具有重复ID的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文