R语言:排序数据框时如何同时重置行名?
排序数据框时同步重置行名的方法
当使用order()函数按列排序数据框时,默认会保留原行名编号。如果想在排序操作中直接将行名重置为连续的1、2、3,可参考以下几种方法:
方法1:用dplyr的arrange()自动重置
dplyr包的arrange()函数在排序后会自动重置行名,无需额外操作:
library(dplyr) mydf <- data.frame(first_name=c("Arya", "Cersei", "Daeneris"), age= c(11, 32, 19)) mydf <- mydf %>% arrange(desc(age)) mydf
执行结果:
first_name age 1 Cersei 32 2 Daeneris 19 3 Arya 11
方法2:基础R中一步完成排序+重置行名
利用rownames<-函数的特性,把排序和行名重置合并为一行操作:
mydf <- data.frame(first_name=c("Arya", "Cersei", "Daeneris"), age= c(11, 32, 19)) mydf <- `rownames<-`(mydf[order(mydf$age, decreasing = T), ], NULL) mydf
方法3:使用data.table包
data.table的排序操作默认会重置行名:
library(data.table) mydf <- data.table(first_name=c("Arya", "Cersei", "Daeneris"), age= c(11, 32, 19)) mydf <- mydf[order(-age)] mydf
内容的提问来源于stack exchange,提问作者TLaguna
相关产品推荐
相关产品推荐

