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

如何在R中排序数据框并生成连续行号?

排序后重置R数据框的行号

场景与问题

先通过列联表创建数据框:

Countries <- table(data1$countries)
Countriesdf <- data.frame(Countries)

初始数据框内容:

Var1 Freq
1    Azerbaijan    1
2    Bangladesh  200 
3       Belarus   19
4       Bolivia   33
5        Brazil  115

尝试用order()按Freq字段排序时,结果保留了原数据框的行号:

Countries_Asc <- order(Countriesdf$Freq)
Countries_Ordered <- Countries[Countries_Asc,]

当前输出(行号未重置):

Var1 Freq
2    Bangladesh  200
5        Brazil  115
4       Bolivia   33
3       Belarus   19
1    Azerbaijan    1

需要得到行号连续的排序结果:

Var1 Freq
1    Bangladesh  200
2        Brazil  115
3       Bolivia   33
4       Belarus   19
5    Azerbaijan    1

解决方案

方法1:基础R重置行名

先按需求排序,再手动重置行号:

# 按Freq降序排序(添加负号实现降序,匹配期望结果)
Countries_Asc <- order(-Countriesdf$Freq)
Countries_Ordered <- Countriesdf[Countries_Asc,]

# 重置行名为连续数字
row.names(Countries_Ordered) <- 1:nrow(Countries_Ordered)

方法2:使用dplyr包(tidyverse风格)

如果使用tidyverse工具链,代码更简洁:

library(dplyr)

Countries_Ordered <- Countriesdf %>%
  arrange(desc(Freq)) %>% # 按Freq降序排序
  `row.names<-`(1:nrow(.)) # 重置行名

执行任意一种方法后,Countries_Ordered的行号就会变为连续的1到5,符合期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:43:28