在r中重新排序数据帧

在r中重新排序数据帧,r,sorting,R,Sorting,如何在r中重新排序具有多个种类的数据帧。每个物种都有不同数量的观察结果,我需要最终的数据框按降序排列,首先列出观察结果最多的物种。在这个例子中,最后的数据框应该首先列出物种B,然后是物种C,最后是物种A colA= c("C","C","C","B","B","B","B","A","A") colB= c(1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1) colC= c(-1.2,-2.1,-3.1,-4.1,-5.1,-6.1,-7.1,-8.1,-9.1) df=

如何在r中重新排序具有多个种类的数据帧。每个物种都有不同数量的观察结果,我需要最终的数据框按降序排列,首先列出观察结果最多的物种。在这个例子中,最后的数据框应该首先列出物种B,然后是物种C,最后是物种A

colA= c("C","C","C","B","B","B","B","A","A")
colB= c(1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1)
colC= c(-1.2,-2.1,-3.1,-4.1,-5.1,-6.1,-7.1,-8.1,-9.1)
df= data.frame (spp=colA, latitude=colB, longitude=colC)
df

您必须创建一个要按其排序的列

基本解决方案

# add a column counting the number of rows in each species
df <- transform(df, n  = ave(latitude ,spp, FUN = length))

# order by this new column

dfordered <- df[order(df$n),]
#添加一列,计算每个物种的行数

太好了!谢谢你的意见。若要按分散顺序重新排序,只需(dfordered@IDelToro
df[order(-df$n),])
df[order(df$n,discreating=TRUE),])
查看问题排序部分的更多详细信息,这是一个重复问题。还有一个快速跟进问题。如果我想按照物种在df中的顺序(即B、C、a)列出物种列表。我可以使用什么命令?现在,如果我想按照物种在df中的排序方式(即B、C、a)列出物种,我有
物种。我可以使用什么命令?现在我有
library(data.table)
DT <- data.table(df)

DT[, n := .N, by = spp]

DTordered <-   DT[order(n),]
# or
setkey(DT, n)