删除具有相同值但在 R 中不同列的重复行

时间:2021-04-25 07:23:48

标签: r

我想删除重复的行,例如如果 A==B 和 B==A,我只想保留其中之一。我有一个如下所示的数据框:

class A { public: typedef int type; static const int val { 1 }; };
class B { public: typedef float type; static const int val { 2 }; };
template<typename T> class C {};
template<int I> class D {};
template<typename T> class X {
    T::type v;                                  // OK
    T::type f(T::type arg) { return arg; }      // OK
    T::type g(double arg) { return static_cast<T::type>(arg); } // OK
    // C<T::type> c1;                           // error
    D<T::val> d;                                // OK (as has always been)
    C<typename T::type> c2;                     // OK (old style)
    typedef T::type mytype;                     // OK
    using mytypeagain = T::type;                // OK
    C<mytype> c3;                               // OK (via typedef / using)
};
X<A> xa;
X<B> xb;

我的预期输出是这样的:

|A      |B      |
|-------|-------|
|A1CF   |APOBEC1|
|A1CF   |KHSRP  |
|A1CF   |SYNCRIP|
|APOBEC1|A1CF   |
|SYNCRIP|A1CF   |

我已经尝试过这些,但它不起作用。

|A      |B      |
|-------|-------|
|A1CF   |APOBEC1|
|A1CF   |KHSRP  |
|A1CF   |SYNCRIP|

1 个答案:

答案 0 :(得分:1)

一种选择是使用最少/最多的技巧,然后删除重复项:

library(SparkR)

df <- unique(cbind(least(df$A, df$B), greatest(df$A, df$B)))

这是上述内容的基本 R 版本:

df <- unique(cbind(ifelse(df$A < df$B, df$A, df$B),
                   ifelse(df$A >= df$B, df$A, df$B)))