R中如何实现去除重复数据?
?duplicated
unique对于一个向量管用,对于matrix、data frame那些就不管用了。
>names(sourcedata) <- "Date" "A" "B" "k1" "k2"<br />
>smp <- sourcedata[!duplicated(data.frame(sourcedata$A,sourcedata$B)),]
</p>
>names(sourcedata) <- "Date" "A" "B" "k1" "k2"<br />
>smp <- subset[sourcedata,!duplicated(sourcedata$A,sourcedata$B),]
</p>
试了以上两个写法都行不通,我想要去除掉数据中重复的A和B,结果还是一样出现重复数据,请问该怎么删除掉双重条件的重复元素呢?
回复 第4楼 的 ryusukekenji:
你的意思是 如果A字段和B字段都重复的话 就要去重?
但是 如果A字段和B字段都重复的话 你保留那一行数据呢
你显然没有搞明白duplicated的用法
回复 第5楼 的 ypchen:
参考了这个网址,http://tolstoy.newcastle.edu.au/R/e8/help/09/12/8736.html,觉得有点不对劲。
是啊,头痛啊。duplicated好像只能过滤掉单列条件,真的不太明白该怎么用duplicated。版主可以大略讲解吗?
>smp <- na.omit(sourcedata[which(data.frame(sourcedata$A,sourcedata$B) != duplicated(data.frame(sourcedata$A,sourcedata$B))),])
</p>
试一下使用which也一样,问题出在不明白duplicated怎么用。版主可以赐教吗?
回复 第6楼 的 ryusukekenji:
我还是不明白你想做什么 你到底想实现什么效果 可以赐教吗?
回复 第3楼 的 谢益辉:
是不是现在的unique可以对数据框等去重了?
dim(iris)
dim(unique(iris))
我试了试,貌似可以。
回复 第8楼 的 512002855:
<br />
methods("unique")<br />
</p>index1<-duplicated(source[,1])
index2=duplicated(source[,2])
index=index1 & index2
source2=source[!index,]
results<-source[!duplicated(source[,c(col_name1,col_name2,...)]),]
用unique函数就可以去重,包括行重复和列重复
lkifish 这个方法不行啊,我试了一下。当两列数据有a,b和b,a时,做索引,两个都是false,怎么能去重呢?如果是如下的这种例子怎么弄呢?
first last
1 q e
2 a b
3 o e
4 b a
5 c h
6 x x
- 已编辑
ryusukekenji,在下@ryusukekenji旧帐户多年前就已没用了。?
dplyr::distinct()
会比较好用