sorting - R:按另一个 data.frame 对多列进行排序?

标签 sorting r

我正在尝试了解如何根据另一列中的多列对一个 data.frame 进行排序。这个问题does this with vectors .有人可以建议一种使用 data.frames 做等效的方法吗?

这是一些示例数据。

x1 <- data.frame(a=1:5, b=letters[1:5], c=rnorm(5))
x2 <- data.frame(a=c(4,4,2), b=c("d", "d", "b"), d=rnorm(3))

所以我想按 x1 的前两列对 x2 进行排序。我的实际数据要复杂得多,但这复制了这个想法......

最佳答案

这实际上取决于您的数据的真实情况。现在看起来,您只需要对一列进行排序,这很容易通过以下方式完成:

x2[order(match(x2[,1],x1[,1])),]

如果您需要不止一列,这会变得有点棘手。您必须指定要先对哪个排序,以及哪一秒排序,例如:
x1 <- data.frame(a=rep(1:3,2), b=rep(letters[2:4],each=2), c=rnorm(6))
x2 <- data.frame(a=c(3,3,2), b=c("c", "d", "b"), d=rnorm(3))


x2[order(match(
  paste(x2[,1],x2[,2]),
  paste(x1[,1],x1[,2]))
),]

这首先在第一列上排序,然后在第二列上排序。您必须记住,您需要 x2 中的所有组合,也需要 x1 中的所有组合。吨

关于sorting - R:按另一个 data.frame 对多列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3990155/

相关文章:

c - 按升序排序整数数组,段错误 : 11

javascript - 根据长度过滤和排序字符串数组?

c# - 按属性对对象列表进行排序 C#

R:GLMM glmer 与 glmmPQL

r - 有没有办法将倒计时器合并到 R 函数中?

python - 如何在由一列定义的分区内进行排序,但将分区保留在原处?

asp.net - 我无法使我的 gridview 的标题可以点击进行排序

r - 用值序列填充矩阵

r - data.table::fread 和不平衡"

r - 在 dplyr select 中使用 perl=TRUE regex