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

 

  

posted @ 2020-10-04 23:45  小鲨鱼2018  阅读(27303)  评论(0编辑  收藏  举报