>

나는 order() 를 이해하려고 노력하고있다  기능이 작동합니다. 정렬시 원래 벡터를 정렬하는 인덱스 순열을 반환한다는 인상을 받았습니다.

예를 들어

> a <- c(45,50,10,96)
> order(a)
[1] 3 1 2 4

이것이 c(2, 3, 1, 4) 를 반환 할 것으로 예상했을 것입니다 정렬 된 목록은 10 45 50 96이므로

다른 사람이이 함수의 반환 값을 이해하도록 도와 줄 수 있습니까?


  • 답변 # 1

    이것이 설명하는 것 같습니다.

    와이즈 비즈 와이즈 비즈  그

    The definition of 인가  ~에있다   질서 증가. 이것은 올바른 예제에서 작동합니다.   순서는 네 번째, 두 번째, 첫 번째, 세 번째 요소입니다.

         

    order 를 찾고 있었을 수도 있습니다 의 순위를 반환합니다.   요소
      와이즈 비즈
      와이즈 비즈
      와이즈 비즈
      와이즈 비즈
      와이즈 비즈
      그래서 a[order(a)]  숫자의 순서를 알려줍니다.   와이즈 비즈  오름차순으로 가져 오는 방법을 알려줍니다.

         

    rank  CDF의 그래프를 제공합니다. 이유를보기 위해   와이즈 비즈  그러나 R> a <- c(4.1, 3.2, 6.1, 3.1) 를 사용해보십시오.   데이터 순서가 증가하지 않기 때문에 혼란을 초래합니다

         

    네가하면
      와이즈 비즈
      와이즈 비즈
      또는 간단히
      와이즈 비즈
      와이즈 비즈
      CDF의 선 그래프를 얻습니다.

    순위에 대해 생각할 것입니다.

  • 답변 # 2

    1D 벡터 또는 단일 데이터 열을 정렬하려면정렬기능을 사용하고 순서대로 전달하십시오.

    반면,순서기능은2 개의차원 데이터, 즉 수집 된 여러 열의 데이터를 정렬하는 데 필요합니다. 매트릭스 또는 데이터 프레임에서.

    R> order(a)
    
    

    다음은 'fg'라고 불리는 데이터 프레임 인 2008 NFL 시즌의 필드 골 시도에 대한 데이터 발췌입니다. 이 10 개의 데이터 요소가 2008 년에 시도 된 모든 필드 목표를 나타냅니다. 또한 그해에 시도한 가장 긴 필드 골의 거리, 발로 차는 사람, 좋은지 여부를 알고 싶다고 가정하십시오. 또한 두 번째로 긴 것뿐만 아니라 세 번째로 긴 것을 알고 싶습니다. 마지막으로 가장 짧은 필드 골 시도를 원합니다.

    음, 당신은 이것을 할 수 있습니다 :

    [1] 4 2 1 3
    
    

    다음을 반환합니다 : 50 48 43 37 34 32 26 25 25 20

    정확하지만 유용하지는 않습니다. 가장 긴 필드 목표 시도 거리, 두 번째로 긴 거리, 가장 짧은 거리를 알려줍니다. 그러나 우리가 아는 전부입니다. 예를 들어, 우리는 키커가 누구인지, 시도의 성공 여부를 알지 못합니다. 물론 "Dist"열에 정렬 된 전체 데이터 프레임이 필요합니다. 단일 속성Dist에서 모든 데이터 행을 정렬하려고합니다. 다음과 같이 보일 것입니다 :

    R> rank(a)
    
    

    순서의 기능입니다.2 차원 데이터의 '정렬'입니다. 달리 말하면, 행 번호로 구성된 1D 정수 인덱스를 반환하여 해당 벡터에 따라 행을 정렬하면Dist

    열에서 올바른 행 지향 정렬을 제공합니다.

    작동 방식은 다음과 같습니다. 위에서정렬은 Dist 열을 정렬하는 데 사용되었습니다. Dist 열에서 전체 데이터 프레임을 정렬하려면 'order'를 사용합니다.'sort'가 위에 사용 된 것과 정확히 같은 방식:

    [1] 3 2 4 1
    
    

    (보통 'order'에서 반환 된 배열을 변수 'ndx'에 바인딩합니다. 정렬하기 위해 인덱스 배열로 사용하기 때문에 'index'에 대한 것입니다.)

    1 단계였습니다. 2 단계입니다.

    'sort'에 의해 반환되는

    'ndx'는 데이터 프레임 'fg'를재주문하기위한 인덱스 배열로 사용됩니다 :

    rank
    
    

    fg_sorted는 바로 위에 재정렬 된 데이터 프레임입니다.

    요약하자면, '정렬'은 인덱스 배열 (정렬하려는 열의 정렬 순서를 지정)을 만드는 데 사용되며, 데이터 배열 (또는 행렬)을 재정렬하기위한 인덱스 배열로 사용됩니다./p>

  • 답변 # 3

    (@ doug에 의해 게시되고 @duffymo에 의해 연결되는 좋은 자료를 요약하는 데 매우 간단하게 여기에 아이디어를 배치하는 것이 도움이 될 것이라고 생각했습니다./em>

    ? order는 원본 벡터를 정렬하기 위해 원본 벡터의 어느 요소가 첫 번째, 두 번째 등을 넣어야하는지 알려주고, 반면, 랭크는 어떤 요소가 가장 낮은, 두 번째로 낮은 지 등을 나타냅니다. . 예를 들면 다음과 같습니다.

    order
    
    

    그래서 plot(a, rank(a)/length(a))   order , '정렬 할 때 세 번째 요소를 먼저 넣으십시오 ...'  '첫 번째 요소는 두 번째로 낮습니다 ...'입니다. (둘 다 어느 요소가 가장 낮은 지에 대해 동의한다는 점에 유의하십시오. 정보를 다르게 제시하기 만합니다.) 따라서 plot(a, rank(a)/length(a),type="S") 를 사용할 수 있습니다.  정렬하지만 우리는 oo<-order(a) 를 사용할 수 없습니다  그런 식으로 :

    plot(a[oo],rank(a[oo])/length(a),type="S")
    
    

    일반적으로 oo<-order(a)   plot(a[oo],(1:length(a))/length(a)),type="S") 와 같지 않습니다  벡터가 이미 정렬되지 않은 경우 :

    Stadium Home Week Qtr Away Off Def Result       Kicker Dist
    751     Out  PHI   14   4  NYG PHI NYG   Good      D.Akers   50
    491     Out   KC    9   1  OAK OAK  KC   Good S.Janikowski   32
    702     Out  OAK   15   4  CLE CLE OAK   Good     P.Dawson   37
    571     Out   NE    1   2  OAK OAK  NE Missed S.Janikowski   43
    654     Out  NYG   11   2  PHI NYG PHI   Good      J.Feely   26
    307     Out  DEN   14   2  BAL DEN BAL   Good       J.Elam   48
    492     Out   KC   13   3  DEN  KC DEN   Good      L.Tynes   34
    691     Out  NYJ   17   3  BUF NYJ BUF   Good     M.Nugent   25
    164     Out  CHI   13   2   GB CHI  GB   Good      R.Gould   25
    80      Out  BAL    1   2  IND IND BAL   Good M.Vanderjagt   20
    
    

    또한 sort(fg$Dist, decreasing=T) 이후  (필수적으로) 데이터의 순위에 따라 운영되는 경우 정보에 영향을주지 않으면 서 데이터를 작성할 수 있지만 다른 방법으로 횡설수설을합니다.

    Stadium Home Week Qtr Away Off Def Result       Kicker Dist
    751     Out  PHI   14   4  NYG PHI NYG   Good      D.Akers   50
    307     Out  DEN   14   2  BAL DEN BAL   Good       J.Elam   48
    571     Out   NE    1   2  OAK OAK  NE Missed S.Janikowski   43
    702     Out  OAK   15   4  CLE CLE OAK   Good     P.Dawson   37
    492     Out   KC   13   3  DEN  KC DEN   Good      L.Tynes   34
    491     Out   KC    9   1  OAK OAK  KC   Good S.Janikowski   32
    654     Out  NYG   11   2  PHI NYG PHI   Good      J.Feely   26
    691     Out  NYJ   17   3  BUF NYJ BUF   Good     M.Nugent   25
    164     Out  CHI   13   2   GB CHI  GB   Good      R.Gould   25
    80      Out  BAL    1   2  IND IND BAL   Good M.Vanderjagt   20
    
    

  • 답변 # 4

    이 작은 코드를 실행하면 주문 기능을 이해할 수있었습니다

    ndx = order(fg$Dist, decreasing=T)
    
    

    참조 : http://r.789695.n4.nabble.com/I-don-t-understand-the-order-function-td4664384.html

  • 답변 # 5

    일부 도움이 될 수 있습니다 포인트.

    fg_sorted = fg[ndx,]
    
    

    당신이 얻는 것은

    > a <- c(45, 50, 10, 96)
    > order(a)  
    [1] 3 1 2 4  
    > rank(a)  
    [1] 2 3 1 4 
    
    

    내가 작성한 코드는 "a"를 "a"의 전체 하위 집합으로 원하며 가장 낮은 값에서 가장 높은 값으로 정렬하려는 것을 나타냅니다.

    order(a)

  • 이전 JSF/Java EE를 사용하여 데이터베이스에서 실시간 업데이트
  • 다음 javascript - JQuery ajax 요청의 진행을 얻는 가장 깨끗한 방법은 무엇입니까?