2017-05-22 10 views
1

私は4つの列をマージしたいと思います。私は彼らが次のようにマージしたいアルファベット順の列の結合

CHR POS EFFECT_ALLELE NON_EFFECT_ALLELE 
1 124 A    C   
5 378 C    T 
3 398 T    C 
3 564 G    A 

:アルファベット順にマージする: CHR:POS:EFFECT_ALLELE:NON_EFFECT_ALLELE

しかし、私は「NON_EFFECT_ALLELE EFFECT_ALLELEが」欲しいです。その上の行のためにそう

は次のようになります。だから、

1:124:A:C 
5:378:C:T 
3:398:C:T 
3:564:A:G 

、第三及び第四例えば、それはNON_EFFECT_ALLELE」にする必要があり、上記:EFFECT_ALLELE」

誰でものコーディングで私を助けることができますアルファベット順に "NON_EFFECT_ALLELE" と "EFFECT_ALLELE" をマージする?事前に

ありがとう!

答えて

0

を我々はデータfをsortすることができますIRSTと行うpaste

df1[3:4] <- t(apply(df1[3:4], 1, sort)) 
do.call(paste, c(df1, sep=":")) 
#[1] "1:124:A:C" "5:378:C:T" "3:398:C:T" "3:564:A:G" 

あるいはこれはsortがINGの行う代わりに各列をループのベクトル化方法で行うことができる

with(df1, paste(CHR, POS, pmin(EFFECT_ALLELE, NON_EFFECT_ALLELE), 
     pmax(EFFECT_ALLELE, NON_EFFECT_ALLELE), sep=":")) 
#[1] "1:124:A:C" "5:378:C:T" "3:398:C:T" "3:564:A:G" 
関連する問題