简体   繁体   中英

combine each two consecutive columns into one column in r

I have a data frame like this:

DF = read.table(text="ID S1 S1 S2 S2 S3 S3 S4 S4 S5 S5
Chr18_2191 C C C T N N T T C C
Chr18_3680 G A A A G G G G G G
Chr18_3881 N N T T A A T T A A
Chr18_4091 G G A G A A G G A A
Chr18_4651 C C T T C C T C C C
Chr18_4705 G G A A G G A A G G
Chr18_4741 G G N N G A G G A A", header=T, stringsAsFactors=F)

I would like to combine each two consecutive columns to one column. The result is expected as:

ID S1 S2 S3 S4 S5
Chr18_2191 CC CT NN TT CC
Chr18_3680 GA AA GG GG GG
Chr18_3881 NN TT AA TT AA
Chr18_4091 GG AG AA GG AA
Chr18_4651 CC TT CC TC CC
Chr18_4705 GG AA GG AA GG
Chr18_4741 GG NN GA GG AA

Thanks for any helps.

This is one option:

data.frame( DF[1], mapply( paste0, DF[-1][c(T,F)], DF[-1][c(F,T)] ) )

which gives

          ID S1 S2 S3 S4 S5
1 Chr18_2191 CC CT NN TT CC
2 Chr18_3680 GA AA GG GG GG
3 Chr18_3881 NN TT AA TT AA
4 Chr18_4091 GG AG AA GG AA
5 Chr18_4651 CC TT CC TC CC
6 Chr18_4705 GG AA GG AA GG
7 Chr18_4741 GG NN GA GG AA

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM