我试图通过两个因素对数据帧的行重新排序.对于第一个因素,我对默认排序感到满意.对于第二个因素,我想将自己的自定义订单强加给行.这是一些虚拟数据:
dat <- data.frame(apple=rep(LETTERS[1:10], 3),
orange=c(rep("agg", 10), rep("org", 10), rep("fut", 10)),
pear=rnorm(30, 10),
grape=rnorm(30, 10))
Run Code Online (Sandbox Code Playgroud)
我想以特定的方式订购"苹果":
appleOrdered <- c("E", "D", "J", "A", "F", "G", "I", "B", "H", "C")
Run Code Online (Sandbox Code Playgroud)
我试过这个:
dat <- dat[with(dat, order(orange, rep(appleOrdered, 3))), ]
Run Code Online (Sandbox Code Playgroud)
但它似乎把"苹果"变成了随机顺序.有什么建议?谢谢.
jor*_*ran 11
尝试使用具有所需顺序的级别的因子和arrange来自的函数plyr:
dat$apple <- factor(dat$apple,levels=appleOrdered)
arrange(dat,orange,apple)
Run Code Online (Sandbox Code Playgroud)
Cha*_*les 11
重新排序因子水平:
dat[with(dat, order(orange, as.integer(factor(apple, appleOrdered)))), ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9364 次 |
| 最近记录: |