我想在R中合并两个列,条件如下:
如果一列有条目(0,1,2),另一列有&#39; ./.',请使用合并列中第一列的条目; < / p>
如果两列都有相同的条目(0,1,2),请使用合并列中的任一条目;
如果一列有条目(1,2),另一列有不同的条目(0,1,2),请使用低于1的条目。例如,如果第一列有一个&#39; 0&#39;并且第二列的条目为&#39; 1&#39;,使用条目&#39; 0&#39; 0在合并列中。
我完全不知道如何开始。有人可以给我一个提示吗?感谢
我可以用Java做到这一点,但是想先尝试R,因为R中的列操作更直接。
答案 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"