我在R中有一个(x)数据框,有5个数字列,除此之外,还有一个信息是以矢量形式遵循的排序顺序,即
1, 0, 2, 4, 3
数据集
v1 v2 v3 v4 v5
1 2 3 4 5
3 13 12 1 4
6 4 6 5 3
预期结果
v1 v2 v3 v4 v5
3 13 12 1 4
1 2 2 4 5
6 4 6 5 3
此向量定义排序顺序,第一列需要先排序,然后是第3列,然后是第5列,然后是第4列。手动它可以作为
完成x = x[order(x[1],)]
x = x[order(x[3],)]
x = x[order(x[5],)]
x = x[order(x[4],)]
rownames(x) = NULL
问题是5列,很容易但是对于100列来说很复杂。 任何导致这一点将不胜感激。
由于
答案 0 :(得分:0)
我们可以对原始向量执行match
,然后使用for
循环来获取输出
i1 <- match(seq_along(x), vec, nomatch = 0)
i1 <- i1[i1!=0]
for(i in i1){
x <- x[order(x[i]),]
}
x
# v1 v2 v3 v4 v5
# 2 3 13 12 1 4
# 1 1 2 3 4 5
# 3 6 4 6 5 3
x <- structure(list(v1 = c(1L, 3L, 6L), v2 = c(2L, 13L, 4L), v3 = c(3L,
12L, 6L), v4 = c(4L, 1L, 5L), v5 = c(5L, 4L, 3L)), .Names = c("v1",
"v2", "v3", "v4", "v5"), class = "data.frame", row.names = c(NA,
-3L))
vec <- c(1, 0, 2, 4, 3)