2017-06-28 26 views
1

我想先按照一列以上升的顺序排列一个数据帧,然后再按照排列顺序依次排列第二列一个外部变量。R:如何在一个命令中按照列将数据框排序为外部变量

鉴于以下MWE:

mylevels <- c("domain", "kingdom", "phylum", "class", "order", "family", "genus", "species") 
mydf <- data.frame(ID=rep(c("A","B","C"), each=8), LEVEL=rep(mylevels, 3), VALUE=1:24) 
mydf2 <- mydf[sample(nrow(mydf)),] 

我想订购mydf2以获得是myDF原始顺序,根据ID ascendantly,并LEVEL如mylevels指定,在一个命令。可能吗?

(注myDF上保持用于演示目的,在我的现实生活中的情况下,我从mydf2开始)

谢谢!

+0

也许[此](https://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns)帮助 –

回答

1

LEVEL集因子水平与正确的顺序,然后通过ID和LEVEL排序:

mydf2$LEVEL = factor(mydf2$LEVEL, levels = mylevels) 
mydf2 = mydf2[order(mydf2$ID, mydf2$LEVEL), ] 

输出:

> head(mydf2) 
    ID LEVEL VALUE 
1 A domain  1 
2 A kingdom  2 
3 A phylum  3 
4 A class  4 
5 A order  5 
6 A family  6 
相关问题