我正在尝试了解如何根据另一列中的多列对一个 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/