2020-9-21 15:58 阅读(8448) 评论(0)

R语言 duplicated()函数

摘要: R语言去重函数,R语言除重函数,R语言剔除重复值
R语言  duplicated()函数详解
概述:
duplicated()确定一个向量或者数据帧的哪些元素与下标较小的元素重复,并返回一个逻辑向量标明哪些元素(行)是重复的。
语法:
duplicated(x, incomparables = FALSE, MARGIN = 1,fromLast = FALSE, ...)
参数说明:
x:向量或数据帧或数组或NULL。
incomparables:一组不能用来比较的值所构成的向量。FALSE是特殊值,意味着所有值都可以用来比较,也可能是方法接受的唯一参数而不是deault。
               它将在内部被强制转换成和参数x一样的类型。
fromLast:从反向来识别重复值的逻辑标识。例如,当deplicated=FALSE是,将返回相同元素的最后(或者最右边)一个。
nmax:期望非重复项的最大个数(大于1)。
... :特殊方法的参数。
MARGIN:要保持固定的数组边距:请参阅apply,需注意margin=0可能有用。

示例1,当参数为向量时:
col1<-c('a','b','c','d','e','f','c','d','e','f','c','g','h')
> duplicated(col1) #判断某个元素是否重复出现,从左往右第二个c、d、e、f,第三个c为重复,这几个显示为TRUE
 [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
> duplicated(col1,incomparables = 'd') #d不参与比较,所以d对应的结果为FALSE
 [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
> duplicated(col1,incomparables = c('c','e')) #c、e不参与比较,所以c、e对应的结果为FALSE
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
> duplicated(col1,incomparables = 'd',fromLast=TRUE) #d不参与比较,倒序对比,所以左边的c、e、f、c显示为TRUE
 [1] FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE

示例2,当参数为数据帧时:
>col1<-c('a','b','c','d','e','f','c','d','e','f','c','g','h')
>col2<-c('A','B','A','B','A','B','A','B','A','B','A','B','A')
>f1<-data.frame(col1,col2)
> duplicated(f1) #从上往下依次展示,重复的行显示为TRUE,不重复的显示为FALSE
 [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
附,f1结果如下:

R语言duplicated()函数的应用场景:
1.找出重复数据
> col1[duplicated(col1)]  #上述col1向量中,重复的部分
[1] "c" "d" "e" "f" "c"
> f1[duplicated(f1),] #上述数据帧f1中,重复的部分
   col1 col2
7     c    A
8     d    B
9     e    A
10    f    B
11    c    A
2.剔除重复值\去重\除重,类似于sql的distinct
> col1[!duplicated(col1)] #对向量col1除重,即不展示重复出现的部分
[1] "a" "b" "c" "d" "e" "f" "g" "h"
> f1[!duplicated(f1),] #对数据帧除重,即不展示重复出现的部分
   col1 col2
1     a    A
2     b    B
3     c    A
4     d    B
5     e    A
6     f    B
12    g    B
13    h    A
按指定列除重,非指定列返回首个值
> f1[!duplicated(f1[,1]),] #按数据帧f1的第一列除重,其余列展示首个值
   col1 col2
1     a    A
2     b    B
3     c    A
4     d    B
5     e    A
6     f    B
12    g    B
13    h    A
按指定列除重,非指定列返回最后一个值
> f1[!duplicated(f1[,1],fromLast = TRUE),] #按数据帧f1的第一列除重,其余列展示最后一个值
   col1 col2
1     a    A
2     b    B
8     d    B
9     e    A
10    f    B
11    c    A
12    g    B
13    h    A




鲜花

握手

雷人

路过

鸡蛋

最新评论

在线笔记
公众号
微信公众号

爱数吧公众号

意见反馈
返回顶部
返回顶部