使用
df <- data.frame(x = rep(1:3, each = 3)
, y = rep(1:3, 3)
, z = round(rnorm(9), 2))
df
x y z
1 1 1 0.55
2 1 2 0.99
3 1 3 -2.32
4 2 1 -0.25
5 2 2 1.20
6 2 3 -0.38
7 3 1 1.07
8 3 2 -0.98
9 3 3 -1.09
有没有办法在每个z
内对x
进行排序,以便:
df.sort
x y z
1 1 3 -2.32
2 1 1 0.55
3 1 2 0.99
4 2 3 -0.38
5 2 1 -0.25
6 2 2 1.20
7 3 3 -1.09
8 3 2 -0.98
9 3 1 1.07
谢谢!
答案 0 :(得分:1)
您可以动态创建新的data.frame
。
data.frame(df$x, df[order(df$z), c("y", "z")])
答案 1 :(得分:1)
如果你想在x的每个值中按z排序(你的例子显示的是什么,而不是你的问题似乎导致了什么,你可以使用plyr并安排
library(plyr)
dfa <- arrange(df, x, z)
你在这里做的是首先按x排序,然后按z
排序