R 根据条件对数据进行排序
在R中有一个(x)数据框,有5个数字列,除此之外,还有一个信息是以向量形式遵循的排序顺序,即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 =
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)