如何在R中使用order函数进行二维排序

4

这是一个非常简单的问题,但是我好像无法掌控order()函数。

我有一些数据对(x, y),我只想按照x的顺序排序,并使y跟随x的顺序。例如:

2, 1
3, 2
1, 3

被重新排序为:

1, 3
2, 1
3, 2

+1 给另一个《光环》的粉丝。 - Hong Ooi
2个回答

1
在R语言中,order()函数返回一个行索引的向量。在你的例子中:
> order(data$x)
[1] 3 1 2

你可以将其解释为“最小值在第3行,第二小的在第1行”,依此类推。重要的是,它不会改变数据框。使用order()按x排序以获得已排序的数据框,你只需简单地使用:
> data[order(data$x),]
  x y
3 1 3
1 2 1
2 3 2

甜美、好看且简单。非常感谢。(是的,我确实是指R,而且我猜你的意思是不改变数据框。) - Toy Molto
是的,确实。我修正了我的答案! - Gala

0
在R中,order(vector)将会给你所需顺序的索引。有了这些索引,你可以重新排列你的向量。 以下是你的例子的命令:
df <- data.frame(x=c(2,3,1), y=c(1,2,3) )

df[order(df$x), ]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接