根据条件对数据进行排序

时间:2017-02-24 04:18:39

标签: r sorting

我在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列来说很复杂。  任何导致这一点将不胜感激。

由于

1 个答案:

答案 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)