如何在R中识别倒排并删除它们?

问题描述 投票:0回答:1

我有以下数据框:

FID1    FID2    PropIBD
ABC    DEF  0.5000
DEF    ABC  0.0000
GHI   LMO  0.002
LMO   GHI   0
L454   9G09 0

如何从此数据框中删除重复/反转且 PropIBD 列为 0 的行?

举个例子,前两行是重复的,因为第一行的 FID1 等于第二行的 FID2,第一行的 FID2 等于第二行的 FID1。因此,我想要以下最终数据框:

 FID1    FID2    PropIBD
    ABC    DEF  0.5000
    GHI   LMO  0.002
    L454  9G09 0

我怎样才能在 R 中做到这一点?

r dataframe dplyr
1个回答
1
投票

您可以使用

aggregate
+
pmin/pmax

aggregate(
    PropIBD ~ .,
    transform(
        df,
        FID1 = pmin(FID1, FID2),
        FID2 = pmax(FID1, FID2)
    ),
    max
)

这给出了

  FID1 FID2 PropIBD
1  ABC  DEF   0.500
2 9G09 L454   0.000
3  GHI  LMO   0.002
© www.soinside.com 2019 - 2024. All rights reserved.