R 删除重复数据的方法,包括duplicated 和unique
针对duplicated, 对向量的元素或数据框的行进行操作的时候,返回逻辑值,以下面的数据框为例:
dat
A B C D
1 a b a c
2 c k b d
3 c k c c
4 d e q k
5 e f g l
6 h g h q
7 j f q k
8 a b a c
9 e f g l
10 o o l m
duplicated(dat)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
dat是一个十行的数据框,其中第8行和第1行重复,第9行和第5行的数据重复,所以,返回值的第8和第9是TRUE,因此,可以按照如下操作,排除为TRUE,也就是重复的数据,只取数据第一次出现的结果。
dat[!duplicated(dat),]
A B C D
1 a b a c
2 c k b d
3 c k c c
4 d e q k
5 e f g l
6 h g h q
7 j f q k
10 o o l m
duplicated可以针对具体区域进行重复数据的判断,例如:
dat[!duplicated(dat[,c("A","B")]),]
A B C D
1 a b a c
2 c k b d
4 d e q k
5 e f g l
6 h g h q
7 j f q k
10 o o l m
dat[!duplicated(dat[1:8,]),]
A B C D
1 a b a c
2 c k b d
3 c k c c
4 d e q k
5 e f g l
6 h g h q
7 j f q k
9 e f g l
10 o o l m
dat[!duplicated(dat[1:8,c("A","B")]),]
A B C D
1 a b a c
2 c k b d
4 d e q k
5 e f g l
6 h g h q
7 j f q k
9 e f g l
10 o o l m
unique 针对向量和着数据框进行处理,会直接将删除重复后的结果进行返回,返回结果取首次出现结果:
unique(dat)
A B C D
1 a b a c
2 c k b d
3 c k c c
4 d e q k
5 e f g l
6 h g h q
7 j f q k
10 o o l m
两种处理结果,原行名都未发生变化。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!