How to order my dataframe lexicographicaly

后端 未结 4 859
北海茫月
北海茫月 2020-12-04 01:36

I have a following data frame

a = data.frame(a=c(1,2,3,4,5,6,7),b=c(1,2,3,10,12,21,4),c=c(1,2,10,11,\"X\",\"Y\",3))
> a
  a  b  c
1 1  1  1
2 2  2  2
3 3         


        
4条回答
  •  情深已故
    2020-12-04 02:08

    Assuming these are human chromosome names, chr1...chr22, chrX, chrY. We can convert them to numeric, then use order:

    # convert to numeric
    a$chromN <- as.integer(ifelse(a$c == "X", "23", ifelse(a$c == "Y", "24", a$c)))
    
    # now sort as usual:
    a[ order(a$chromN), ]
    
    #   a  b  c chromN
    # 1 1  1  1      1
    # 3 3  3 10      2
    # 4 4 10 11      3
    # 2 2  2  2      4
    # 7 7  4  3      5
    # 5 5 12  X     23
    # 6 6 21  Y     24
    

提交回复
热议问题