gpt4 book ai didi

r - 同时使用三个变量对数据框进行排序

转载 作者:行者123 更新时间:2023-12-02 01:29:37 25 4
gpt4 key购买 nike

我想使用不同的变量订购一个表,如下所示:

  • 同时考虑三个变量来增加值,而不是像我们可以使用函数arrange(col1, col2, col3) 那样增加第一个变量的值,然后增加第二个变量的值,最后增加最后一个变量的值。

下面是我的意思的一个例子。如果不够清楚,请随时询问更多细节在示例中,第 5 行 (19,5,10) 位于第 6 行 (6, NA, NA) 之前,因为 5 低于 6

set.seed(123) 
data=data.frame(col1=sample(1:20,10), col2=c(sample(1:20,5), NA, NA, NA, NA, NA), col3=c(sample(1:20,5), NA, NA, NA, NA, NA))

col1 col2 col3
1 15 14 7
2 19 5 10
3 14 9 9
4 3 3 4
5 10 8 14
6 2 NA NA
7 6 NA NA
8 11 NA NA
9 5 NA NA
10 4 NA NA

> data_output
col1 col2 col3
1 2 NA NA
2 3 3 4
3 4 NA NA
4 5 NA NA
5 19 5 10
6 6 NA NA
7 15 14 7
8 10 8 14
9 14 9 9
10 11 NA NA

有什么想法吗?

谢谢

最佳答案

获取每行的minimum值,并对其进行排序:

data[order(apply(data, 1, min, na.rm = T)), ]

或者,使用pmin:

data[order(do.call(pmin, c(data, na.rm = TRUE))), ]

或使用matrixStats::rowMins:

library(matrixStats)
data[order(rowMins(as.matrix(data), na.rm = T)), ]

   col1 col2 col3
6 2 NA NA
4 3 3 4
10 4 NA NA
2 19 5 10
9 5 NA NA
7 6 NA NA
1 15 14 7
5 10 8 14
3 14 9 9
8 11 NA NA

关于r - 同时使用三个变量对数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73621406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com