在R语言中如何对列名不同的dataframe列表按第三列降序排列
解决方法
你可以直接通过列位置而非列名指定排序字段,两种常用实现方案如下:
1. tidyverse 方案(适配arrange函数用法)
如果使用dplyr的arrange实现,搭配purrr遍历列表即可:
library(purrr) library(dplyr) # 假设你的dataframe列表名为df_list sorted_df_list <- map(df_list, ~ .x %>% # 直接指定第三列的位置排序,无需提前知道列名 arrange(desc(across(3))) )
如果使用的是旧版dplyr,不支持across语法,可以改用列名索引的写法:
sorted_df_list <- map(df_list, ~ .x %>% arrange(desc(.data[[names(.x)[3]]])) )
2. 基础R方案
无需加载第三方包也可以快速实现:
sorted_df_list <- lapply(df_list, function(x) { # 按第三列值的倒序重排行索引 x[order(-x[,3]), ] })
你给出的第三个dataframe运行后输出结果如下:
PROVINCE DISTRICT 10 5 11 6 90743.17 3 11 4 21119.15 4 11 5 12580.12 1 11 1 677.17 6 11 8 171.84 2 11 3 115.69
内容的提问来源于stack exchange,提问作者Kian
相关产品推荐
相关产品推荐

