0

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

谢谢!

4

2 回答 2

1

data.frame您可以即时创建一个新的。

data.frame(df$x, df[order(df$z), c("y", "z")])
于 2012-10-25T06:12:28.237 回答
1

如果您想在 x 的每个值内按 z 排序(您的示例显示的内容,而不是您的问题似乎导致的内容,您可以使用 plyr 并安排

library(plyr)
dfa <- arrange(df, x, z)

你在这里做的是先按 x 排序,然后按 z

于 2012-10-25T06:15:29.807 回答