2017-05-22 3 views
1

병합 할 열이 4 개 있습니다. 알파벳 순서에 병합 될 : "NON_EFFECT_ALLELE EFFECT_ALLELE을" CHR:POS:EFFECT_ALLELE:NON_EFFECT_ALLELE알파벳 순서로 열을 병합

그러나, 내가 원하는 :

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

나는 그들에게 다음과 같은 방법으로 병합 할. 위의 라인 그래서

은 다음과 같습니다 세 번째와 네 번째 그래서 예를 들면

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가 보내고 수행하는 대신에 각 행을 통해 루프의 벡터화 방법으로 수행 할 수 있습니다

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" 
관련 문제