R语言中duplicated函数:去重复,取重复
1、创建测试数据
> test <- c(1,2,3,1,1,2,5) ##创建向量测试数据
> test
[1] 1 2 3 1 1 2 5
> duplicated(test) ## 基本用法,返回逻辑值,非重复为F,重复为T
[1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE
>
2、对向量去重复、取重复
> test[!duplicated(test)] ##对向量test取唯一值,去重复
[1] 1 2 3 5
> test[duplicated(test)] ##取向量test中的重复值
[1] 1 1 2
3、duplicated在数据框中的操作 参考 :https://blog.csdn.net/xxzhangx/article/details/52369174
> test <- data.frame(x1 = c(1,2,3,4,5,1,3,5),x2 = c("a","b","c","d","e","a","b","e"), x3 = c("a","b","c","d","e","a","c","e")) ##创建测试数据
> test
x1 x2 x3
1 1 a a
2 2 b b
3 3 c c
4 4 d d
5 5 e e
6 1 a a
7 3 b c
8 5 e e
> duplicated(test) ## 可以对数据框直接返回逻辑值,以行为单位
[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
> test[duplicated(test),] ## 提取重复行
x1 x2 x3
6 1 a a
8 5 e e
> test[!duplicated(test),] ## 提取唯一行
x1 x2 x3
1 1 a a
2 2 b b
3 3 c c
4 4 d d
5 5 e e
7 3 b c
> duplicated(test[,c(2:3)]) ## 仅利用2、3列返回重复逻辑值
[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
> test[duplicated(test[,c(2:3)]),] ## 利用2、3列中的重复逻辑值返回重复行
x1 x2 x3
6 1 a a
8 5 e e
> test[!duplicated(test[,c(2:3)]),] ## 利用2、3列中的重复逻辑值返回非重复行
x1 x2 x3
1 1 a a
2 2 b b
3 3 c c
4 4 d d
5 5 e e
7 3 b c
> duplicated(test$x1) ## 利用单列返回重复逻辑值
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
> test[duplicated(test$x1),] ##利用单列返回重复逻辑值取重复行
x1 x2 x3
6 1 a a
7 3 b c
8 5 e e
> test[!duplicated(test$x1),] ## 取非重复行
x1 x2 x3
1 1 a a
2 2 b b
3 3 c c
4 4 d d
5 5 e e