You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用dplyr对data.frame所有变量进行降序排列?

使用dplyr对data.frame所有变量降序排列的方法

嗨,我来帮你用dplyr搞定这个需求!其实有几种简洁的方式可以实现,而且能保持结果还是data.frame格式(不像sapply返回矩阵),具体如下:

方法1:使用mutate_all(适用于旧版dplyr)

如果你用的是较旧版本的dplyr,可以直接用mutate_all对所有列应用排序函数:

library(dplyr)
my_data %>% mutate_all(sort, decreasing = TRUE)

方法2:使用across(dplyr 1.0.0+推荐用法)

从dplyr 1.0.0版本开始,官方更推荐用across函数,它的灵活性更强,能更清晰地指定要操作的列范围:

my_data %>% mutate(across(everything(), ~sort(.x, decreasing = TRUE)))

这里的everything()表示选中所有列,~sort(.x, decreasing = TRUE)是一个匿名函数,对每一列.x执行降序排序。

和sapply的小区别

你之前用sapply(my_data, function(x) sort(x, decreasing = T))得到的是矩阵,而上面的dplyr方法返回的是和原数据结构一致的data.frame,这在后续的数据处理中可能更方便哦。

举个实际例子:
假设你的数据是:

my_data <- data.frame(a = c(3,1,2), b = c(5,2,7))

用上面的dplyr方法处理后,结果会是:

a b
1 3 7
2 2 5
3 1 2

内容的提问来源于stack exchange,提问作者patL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:24:34