R中的Deduping Column对

时间:2015-01-20 14:38:16

标签: r deduplication

我有一个包含7列的数据框,并希望在前两列中具有相同信息的记录,即使它们的顺序相反。

这是我的df的片段

 zip1  zip2       APP       PCR       SCR       APJ       PJR
1 01701 01701 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
2 01701 01702 0.9887567 0.9898379 0.9811615 0.9993856 0.9842659
3 01701 01703 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
4 01701 01704 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
5 01704 01701 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000

我知道如何使用unique,但这里的转折是我想要处理zip1 = a和zip2 = b与zip1 = b和zip2 = a相同的实例。所以我基本上只想要这两个实例的一条记录。因此,例如我只想要第4列而不是第5列 有什么建议吗?

谢谢, 本

1 个答案:

答案 0 :(得分:3)

首先创建一个新的向量,用于标识具有特定zip对的行,但不会根据顺序进行区分:

zipUp<-paste(pmin(df$zip1,df$zip2),pmax(df$zip1,df$zip2))

现在在该向量中找到重复项,并将其从原始数据框中丢弃。

dups<-duplicated(zipUp)

newdf<-df[!dups,]

我假设前两列不包含NA。如果他们这样做,您将需要调整pmin,pmax调用以保持每对的任何非NA值