R:如何根据列AND将数据帧排序到一个命令中的外部变量

时间:2017-06-28 02:44:54

标签: r dataframe

我想先按照一列按升序排序数据框,然后按外部变量中的等级指定第二列。

鉴于以下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上升,并在一个命令中获取mylevels中指定的LEVEL。有可能吗?

(注意mydf用于演示目的,在我的实际案例中,我从mydf2开始)

谢谢!

1 个答案:

答案 0 :(得分: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