2013-03-12 2 views
1

r에 여러 종의 데이터 프레임 순서를 바꾸려면 어떻게해야합니까? 각 종의 관측 수는 다르며, 대부분의 관측치가 먼저 나열된 종을 내림차순으로 정렬하려면 최종 데이터 프레임이 필요합니다. 이 예에서 최종 dataframe은 첫 번째 목록 정화의 B 후 종 C 그리고 마지막으로 정화 A를 보일 것r에 데이터 프레임 reodering

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 (즉, B, C, A). 어떤 명령을 사용할 수 있습니까? 나에게는'종 <수준 (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) 

정렬 D ata.frames by columns는 How to sort a dataframe by column(s)?

+0

좋아요! 의견을 보내 주셔서 감사합니다. densered 순서로 reoder를 사용하면, (dfdf [order (df $ n)]) –

+0

@IDelToro'df [order (-df $ n),])'df [order (df $ n) , reduced = TRUE),])'질문의 순서 부분에 대한 자세한 내용은 http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r을 참조하십시오. 그것은 중복이다. – mnel

+0

한 가지 더 빠른 후속 질문입니다. 나는 종의 목록을 df (즉, B, C, A)에있는 방식으로 정렬하려고했다. 어떤 명령을 사용할 수 있습니까? 나에게는'종 <수준 (df $ spp)'이있다. 새로운 "종"개체에서 종을 어떻게 주문할 수 있습니까? –

관련 문제