我想要根据最后一个列名自动地对数据帧进行排序。由于我的数据框架中的最后一个列名是动态的,所以我不能指定列名。
下面是我想要实现的作为一个输出。
iris %>%
select(-Species) %>%
arrange(desc(Petal.Width))
正如我在回应中建议的那样,我尝试了下面的选项,但是它不起作用。我是不是遗漏了什么?
iris %>%
select(-Species) %>%
arrange(desc(ncol(.)))
发布于 2022-08-07 07:17:11
我们可以用across
来做
library(dplyr)
library(psych) # for `headTail()`
iris %>%
select(-Species) %>%
arrange(across(last_col(), desc)) %>%
headTail()
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 6.3 3.3 6 2.5
2 7.2 3.6 6.1 2.5
3 6.7 3.3 5.7 2.5
4 5.8 2.8 5.1 2.4
... ... ... ... ...
147 4.8 3 1.4 0.1
148 4.3 3 1.1 0.1
149 5.2 4.1 1.5 0.1
150 4.9 3.6 1.4 0.1
发布于 2022-08-07 07:27:19
使用Base R
选项
subset(iris , select = -Species) |>
(\(x) x[order(- x[ncol(x)]) , ])()
Sepal.Length Sepal.Width Petal.Length Petal.Width
101 6.3 3.3 6.0 2.5
110 7.2 3.6 6.1 2.5
145 6.7 3.3 5.7 2.5
115 5.8 2.8 5.1 2.4
137 6.3 3.4 5.6 2.4
141 6.7 3.1 5.6 2.4
116 6.4 3.2 5.3 2.3
119 7.7 2.6 6.9 2.3
......................................................
40 5.1 3.4 1.5 0.2
43 4.4 3.2 1.3 0.2
47 5.1 3.8 1.6 0.2
48 4.6 3.2 1.4 0.2
49 5.3 3.7 1.5 0.2
50 5.0 3.3 1.4 0.2
10 4.9 3.1 1.5 0.1
13 4.8 3.0 1.4 0.1
14 4.3 3.0 1.1 0.1
33 5.2 4.1 1.5 0.1
38 4.9 3.6 1.4 0.1
https://stackoverflow.com/questions/73268422
复制相似问题