重新排序r中的数据帧

时间:2013-03-12 00:50:32

标签: 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= data.frame (spp=colA, latitude=colB, longitude=colC)
df

1 个答案:

答案 0 :(得分:3)

您必须通过

创建一个您想要订购的列

基础解决方案

# 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),]

data.table解决方案(编码和内存效率)

library(data.table)
DT <- data.table(df)

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

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

How to sort a dataframe by column(s)?

详细介绍了按列对data.frames进行排序