【发布时间】:2016-08-16 13:38:35
【问题描述】:
我的数据是这样的:
RES1 <- c("A","B","A","A","B")
RES2 <- c("B","A","A","B","A")
VAL1 <-c(3,5,3,6,8)
VAL2 <- c(5,3,7,2,7)
dff <- data.frame(RES1,VAL1,RES2,VAL2)
dff
RES1 VAL1 RES2 VAL2
1 A 3 B 5
2 B 5 A 3
3 A 3 A 7
4 A 6 B 2
5 B 8 A 7
我想删除我已经拥有相同 res1-res2 对的行。例如:A 3 与 B 5 交互。这就是我想要的信息。我不在乎哪一对是第一个。 B 5 与 A 3 或 A 3 与 B 5。我想要得到的是以下数据框:
output
RES1 VAL1 RES2 VAL2
1 A 3 B 5
2 A 3 A 7
3 A 6 B 2
4 B 8 A 7
然后我想对另一个数据框做同样的事情,例如:
RES3 <- c("B","B","B","A","B")
RES4 <- c("A","A","A","A","B")
VAL4 <- c(3,7,5,3,8)
VAL3 <- c(5,8,3,7,3)
df2 <- data.frame(RES3,VAL3,RES4,VAL4)
df2
RES3 VAL3 RES4 VAL4
1 B 5 A 3
2 B 8 A 7
3 B 3 A 5
4 A 7 A 3
5 B 3 B 8
最后,我只想保持相互对(在我的定义中,两对是相同的,保持一对是必不可少的:“A 5”-“B 3”与“B 3”-“A 5”相同"。换句话说,顺序无关紧要。
我希望的最终输出应该有以下对,它们是唯一的,并且存在于两个数据帧中:
mutualpairs
RESA VALA RESB VALB
A 3 B 5
A 3 A 7
B 8 A 7
【问题讨论】:
-
Related: stackoverflow.com/q/25297812 也许值得注意的是
pmax/pmin比 rowwisesort快得多。 -
@digEmAll 我已经编辑了问题,仍然可以使用您的帮助。
-
好的,从一个 data.frame 移动到两个是一个相当大的变化(足以使当前的答案不再有效)。也许您应该改为发布一个新问题。不过,如果你愿意,我会找人重新提出这个问题。 (我自己做不到。)不确定 digEmAll 是否被 ping 通。您可能应该在他的回答下发表评论,而不是在这里。
-
@Frank 我想我会打开一个新问题并删除这个问题。这行得通吗?
-
您将无法删除这个,因为它有一个赞成的答案。 (你也不应该,因为原则上它可能对其他人有用。)但我认为打开另一个很好。我的建议是:让新帖子自成一体;链接在这里,但要确保它本身是可以理解的。
标签: r dataframe comparison remove-if