合并条件为R的列



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

  1. 如果一列有条目(0,1,2),而另一列有"./.",使用合并列中第一列的条目;

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

  3. 如果一列有一个条目(1,2),而另一列有不同的条目(0,1,2。例如,如果第一列的条目为"0",而第二列的条目则为"1",请在合并列中使用条目"0"。

我真的不知道该怎么开始。有人能给我一个提示吗?感谢

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

也许:

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"

最新更新