Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据条件对数据进行排序_R_Sorting - Fatal编程技术网

R 根据条件对数据进行排序

R 根据条件对数据进行排序,r,sorting,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 该向量定义了排序顺序,第一列需要先排序,第三列需要排序,第五列需要排序,第四列需要排序。可以按以下步骤手动执行此操作: x =

在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
该向量定义了排序顺序,第一列需要先排序,第三列需要排序,第五列需要排序,第四列需要排序。可以按以下步骤手动执行此操作:

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列来说很复杂。 对此,我们将不胜感激


谢谢

我们可以对原始向量进行
匹配
,然后使用
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

i1添加一个具有预期输出的可复制示例。添加一个简单示例供您参考sirI感到困惑。什么是向量
1,0,2,4,3
。什么是
1 3 5 4
?此外,数据集和预期输出对我来说也不清楚。vector说先排序第一列,然后第三列,然后第五列,然后第四列1,0,2,4,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)