我想在R中合并两列,条件如下:
-
如果一列有条目(0,1,2),而另一列有"./.",使用合并列中第一列的条目;
-
如果两列都有相同的条目(0、1、2),请使用合并列中的任一条目;
-
如果一列有一个条目(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"