gpt4 book ai didi

重新排序 data.frame 并重写行名?

转载 作者:行者123 更新时间:2023-12-02 11:15:37 25 4
gpt4 key购买 nike

我有一个像这样的数据框:

id<-c("001-020", "001-010", "001-051")
name<-c("Fred", "Sue", "Liam")
df<-data.frame(id, name)

我尝试过:

df[with(df, order(id)), ]
# id name
# 2 001-010 Sue
# 1 001-020 Fred
# 3 001-051 Liam

正确排序 data.frame,但不触及行名。

如何使用 id 字段的升序对 data.frame 进行重新排序,并一次重写行名称?

最佳答案

你可以试试

 newdf <- df[with(df, order(id)), ]
row.names(newdf) <- NULL

或者可以一步完成

 newdf <- `row.names<-`(df[with(df,order(id)),], NULL)

当您有一个空的 data.frame 时,将 row.names 设置为 NULL 也将起作用。

  d1 <- data.frame()
row.names(d1) <- NULL
d1
#data frame with 0 columns and 0 rows

如果我们对1:nrow做同样的事情

 row.names(d1) <-1:nrow(d1)
#Error in `row.names<-.data.frame`(`*tmp*`, value = c(1L, 0L)) :
#invalid 'row.names' length
<小时/>

或者另一个选项是data.table

 library(data.table)#v1.9.4+
setorder(setDT(df), id)[]

或者

 setDT(df)[order(id)]
<小时/>

或者使用sqldf

 library(sqldf)
sqldf('select * from df
order by id')

关于重新排序 data.frame 并重写行名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com