我想先按照一列按升序排序数据框,然后按外部变量中的等级指定第二列。
鉴于以下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开始)
谢谢!
答案 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