2013-03-12 3 views
1

Как переупорядочить блок данных с несколькими видами в r. Каждый вид имеет различное количество наблюдений, и мне нужно, чтобы окончательный блок данных упорядочивался в порядке убывания с видом с большинством наблюдений, перечисленных первым. В этом примере окончательный dataframe должен выглядеть список звонкой В первую затем Species C и, наконец, звонкой А.Перемещение кадра данных в r

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 
+0

Если бы я хотел составить список видов, упорядоченных так, как они находятся в df (т. В, С, А). Какую команду я могу использовать? Теперь у меня есть 'species <- levels (df $ spp)'. Как я могу заказать вид в новом «видовом» объекте? –

ответ

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) 

Сортировка д ata.frames by columns подробно рассмотрено в How to sort a dataframe by column(s)?

+0

Отлично! Спасибо за ввод. Для reoder в порядке декодирования это будет просто (dfordered <- df [order (df $ n),]) –

+0

@IDelToro 'df [order (-df $ n),])' или 'df [order (df $ n , убывающее = TRUE),]) 'см. http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r для получения более подробной информации о части заказа вопроса, который является дубликатом. – mnel

+0

Еще один быстрый вопрос. Если бы я хотел составить список видов, упорядоченных так, как они находятся в df (т. Е. B, C, A). Какую команду я могу использовать? Теперь у меня есть 'species <- levels (df $ spp)'. Как я могу заказать вид в новом «видовом» объекте? –