1

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
4

1 に答える 1

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)

列による data.framesの並べ替えについては、「データフレームを列で並べ替える方法」で詳しく説明されています。

于 2013-03-12T00:59:18.963 に答える