2011-12-08 2 views
3

내 용서를 용서하지만 데이터 프레임을 정렬하는 데 문제가 있습니다. 데이터 프레임이 목록의 순서로 정렬되도록 정렬 할 때 c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")과 같은 정렬 된 목록을 지정하고 싶습니다. 이 예에서 R의 목록을 사용하여 정렬 순서를 지정하려면 어떻게해야합니까?

, 나는

Day Present Count 
    Fri No 164 
    Fri Yes 131 
    Mon No 142 
    Mon Yes 174 
    Sat No 39 
    Sat Yes 26 
    Sun No 44 
    Sun Yes 39 
    Thu No 191 
    Thu Yes 192 
    Tue No 184 
    Tue Yes 214 
    Wed No 343 
    Wed Yes 255 

로 시작하고 내가 perday[do.call(order, perday[c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")]),]을 시도했지만 나는 "선택 정의되지 않은 열"수

Day Present Count 
    Mon No 142 
    Mon Yes 174 
    Tue No 184 
    Tue Yes 214 
    Wed No 343 
    Wed Yes 255 
    Thu No 191 
    Thu Yes 192 
    Fri No 164 
    Fri Yes 131 
    Sat No 39 
    Sat Yes 26 
    Sun No 44 
    Sun Yes 39 

로 종료하고 싶습니다. 문자 벡터에 14 개의 항목이있는 경우에도 동일한 오류가 발생하므로이 시점에서 혼란 스럽습니다. 여기

는 dput입니다 :

perday<-structure(list(dayofweek = c("Fri", "Fri", "Mon", "Mon", "Sat", 
"Sat", "Sun", "Sun", "Thu", "Thu", "Tue", "Tue", "Wed", "Wed" 
), Attended = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L), .Label = c("No", "Yes"), class = "factor"), 
    nrow = c(164L, 131L, 142L, 174L, 39L, 26L, 44L, 39L, 191L, 
    192L, 184L, 214L, 343L, 255L)), .Names = c("dayofweek", "Attended", 
"nrow"), row.names = c(NA, -14L), class = "data.frame") 

답변

8

당신은

dayofweek Attended nrow 
3  Mon  No 142 
4  Mon  Yes 174 
11  Tue  No 184 
12  Tue  Yes 214 
13  Wed  No 343 
14  Wed  Yes 255 
9  Thu  No 191 
10  Thu  Yes 192 
1  Fri  No 164 
2  Fri  Yes 131 
5  Sat  No 39 
6  Sat  Yes 26 
7  Sun  No 44 
8  Sun  Yes 39 
+2

아, 요인을 만들고 수준을 지정해야합니다. 이제 수입에 stringsAsFactors = FALSE를 설정하기 시작 했으므로 실제로 어떤 요소가 필요한지 배우기 시작했습니다. –

+0

좋습니다. 이것은 인생을 쉽게 만듭니다. – saudic

0

몰라 이유를 제공

perday[order(factor(perday$dayofweek,levels=c(c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")))),] 

와 "인라인"그것을 할 수 있지만, 그 순서를 변경하지 않았다 내 데이터 프레임.

대신, 다음 코드는했다 : 당신이 당신 안양에서 라인의 원래 순서를 변경해야

dfordered=df[c(1,2,3,9,5,6,8,10,11,4,7),] 

참고.

관련 문제