我有一个包含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列 有什么建议吗?
谢谢, 本
答案 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值