2017-05-22 2 views
1

J'ai 4 colonnes que je veux fusionner.Fusion de colonnes dans l'ordre alphabétique

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

Je veux qu'ils soient fusionnés de la manière suivante: CHR:POS:EFFECT_ALLELE:NON_EFFECT_ALLELE

Cependant, je veux « EFFECT_ALLELE: NON_EFFECT_ALLELE » à fusionner sur l'ordre alphabétique.

Donc, pour les lignes ci-dessus, il serait:

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

Ainsi, pour la troisième et quatrième exemple ci-dessus doit être « NON_EFFECT_ALLELE: EFFECT_ALLELE »

Quelqu'un peut me aider avec le codage la fusion "NON_EFFECT_ALLELE" et "EFFECT_ALLELE" sur l'ordre alphabétique?

Merci à l'avance!

Répondre

0

Nous pouvons sort les données f IRST et faire 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" 

Ou cela peut être fait d'une manière vectorisé au lieu de boucle à travers chaque ligne pour faire le 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"