R语言数据列去重
- unique对于一个向量管用,对于matrix、data frame那些
指定列去重
就不管用了
1、unique函数
- 查看重复的方式,有点像分类变量个数一样,unique() 或者 table() 都是很好的方式去检测。
> c
a b d
1 1 a 1
2 2 b 1
3 3 c 1
4 1 a 1
5 2 b 1
6 3 c 1
> unique(c)
a b d
1 1 a 1
2 2 b 1
3 3 c 1
> unique(c,fromLast = T)
a b d
4 1 a 1
5 2 b 1
6 3 c 1
以上是根据你的数据得到的,R中默认的是fromLast=FALSE,即若样本点重复出现,则取首次出现的;
否则去最后一次出现的。列名不变,去掉重复样本值之后的行名位置仍为原先的行名位置。
2、duplicated函数
- 在数据框(data.frame)中应用较为广泛
> c[!duplicated(c)]
a b d
1 1 a 1
2 2 b 1
3 3 c 1
4 1 a 1
5 2 b 1
6 3 c 1
> c[!duplicated(c),] ###注意`,`
a b d
1 1 a 1
2 2 b 1
3 3 c 1
> c[!duplicated(c[3]),]
a b d
1 1 a 1
#用法与is.na()对比
x[!is.na(x)] #选中不是缺失值的数据
3、distinct(dplyr包)
- distinct(data,列名,.keep_all=F)
## .keep_all默认FALSE
> distinct(c,d)
d
1 1
> distinct(c,d,.keep_all = T)
a b d
1 1 a 1
> distinct(c,a)
a
1 1
2 2
3 3