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 |
最新评论