【问题标题】:Sort one vector based on other根据另一个向量对一个向量进行排序
【发布时间】:2017-04-11 16:55:42
【问题描述】:

我有 2 个向量,

x <- c (1,4,6,7,9,2)
y <- c (2,6,5,1,8,9)

我想对 x 和 y 都进行排序。 y 取决于 x。我想要的结果是

x = (1,2,4,6,7,9)
y = (2,9,6,5,1,8)

我知道我可以得到排序 x 的索引为

sort(x, index.return=TRUE)$ix

如何对向量 y 进行排序?

【问题讨论】:

标签: r sorting


【解决方案1】:

我们可以用它作为索引

i1 <- sort(x, index.return=TRUE)$ix

order

i1 <- order(x)
x[i1]
#[1] 1 2 4 6 7 9

y[i1]
#[1] 2 9 6 5 1 8

【讨论】:

  • 好的。谢谢。让我试着回来:)
  • 我不认为这是正确的;因为 x 中的最小值是 1 并且它在第一位。但是y的最小值不是第一个。
  • @Z.Zhang OP的问题是根据'x'的值而不是'y'对y进行排序
【解决方案2】:

您正在寻找order()。它根据向量中的值生成索引。使用此索引,您可以对 y 向量进行排序

y[order(x)]
# [1] 2 9 6 5 1 8

但是,请确保向量具有相同的长度。否则会生成NAs

x <- c (1,4,6,7,9,2,3)
y <- c (2,6,5,1,8,9)
y[order(x)]
# [1]  2  9 NA  6  5  1  8

否则一些值会丢失

x <- c (1,4,6,7,9,2)
y <- c (2,6,5,1,8,9,3)
y[order(x)]
# [1] 2 9 6 5 1 8

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多