合并R中条件的列

时间:2014-10-06 19:23:14

标签: r merge

我想在R中合并两个列,条件如下:

  1. 如果一列有条目(0,1,2),另一列有&#39; ./.',请使用合并列中第一列的条目; < / p>

  2. 如果两列都有相同的条目(0,1,2),请使用合并列中的任一条目;

  3. 如果一列有条目(1,2),另一列有不同的条目(0,1,2),请使用低于1的条目。例如,如果第一列有一个&#39; 0&#39;并且第二列的条目为&#39; 1&#39;,使用条目&#39; 0&#39; 0在合并列中。

  4. 我完全不知道如何开始。有人可以给我一个提示吗?感谢

    我可以用Java做到这一点,但是想先尝试R,因为R中的列操作更直接。

1 个答案:

答案 0 :(得分:1)

也许:

apply( cbind(x,y), 1,   # This will coerce to character if any "./" present.
         function(s) if( "./." %in% s ) { s[ which( s != "./.")]} else{
                                   if( s[1]==s[2] ){ s[1] } else{
                                                     min(s)
                                  }                             }
      )

没有检查非{0,1,2}值的错误,但是我从这个限制被预期的问题中得到了它。将返回一个字符向量。

> x
[1] "1"   "./." "0"   "2"  
> y <- rev(x);y
[1] "2"   "0"   "./." "1"  
> apply( cbind(x,y), 1,   
+          function(s) if( "./." %in% s ) {  s[ which( s != "./.")]} else{
+                                    if( s[1]==s[2] ){ s[1] } else{
+                                                      min(s)
+                                                      }           } )
[1] "1" "0" "0" "1"