R/R basic

정렬(오름차순, 내림차순)할 때 쓰는 함수: arrange

시키테이 2022. 6. 23. 09:13
반응형
df<-df%>%arrange(Stock)

앞서 칼럼 값을 일정 기준으로 정렬할 때는 쓰는 기본적인 법을 얘기했는데요. 그 때는 order라는 함수를 썼습니다.

[R기본] R로 데이터프레임 만들기, 행&열 뽑기, 부분 집합, 그리고 순서 (tistory.com)

 

[R기본] R로 데이터프레임 만들기, 행&열 뽑기, 부분 집합, 그리고 순서

#기본적으로 가공의 데이터를 만듭니다. c는 복수의 데이터가 들어갈 때 반드시 써줘야 합니다. a #데이터 프레임 형태로 바꿉니다. 자동으로 a, b, c를 칼럼으로 인식합니다. 단 이는 a, b, c수가 일

approximation.tistory.com

사실 이보다 훨 간단한 함수가 arrange라는 함수인데, 이건 dplyr (혹은 tidyverse)안에 있습니다. 그래서 이 라이브러리를 다운받으셔야 하구요. 

df<-df%>%arrange(Stock)

이렇게 적으면 df라는 데이터프레임에 있는 Stock이라는 칼럼(열)의 값을 오름차순으로 정렬해서 다시 기존 데이터프레임으로 업데이트하라 정도 되겠습니다. 그리고 missing value (NA)가 있으면 오름차순이든 내림차순이든 상관없이 맨 마지막으로 보냅니다. 내림차순으로 하려면 desc를 추가적으로 해주시면 되구요. 

 

mtcars로 R에 내장된 데이터를 갖고 다시 해볼까요? 아래 두 경우는 모두 같은 내용입니다. mtcars에 있는 데이터프레임을 cyl, disp 오름차순으로 정렬하라. 

arrange(mtcars, cyl, disp)
#dplyr를 사용할경우
mtcars%>%arrange(cyl, disp)

여기서 만약 그룹을 만들어서 그룹 "안"에서 정렬하라고 하면 일단 그룹을 만든 다음에, 그 다음에 그룹 안에서 정렬을 해주면 됩니다. 예를 들어 cyl 갖고 그룹을 먼저 만들고 그 다음에 정렬하려면 아래처럼 명령문을 써주고

 

by_cyl <- mtcars %>% group_by(cyl)
#group_by를 통해 그룹을 만들어준다.
head(by_cyl %>% arrange(desc(wt), .by_group = TRUE), 20)
#이후 정렬할 때 그룹 안에서 정렬을 해야 하기 때문에 by_group=T를 넣어주고, 그 다음에 wt 내림차순으로 하라고 적어준다.

 

위에서 치면 아래 같은 결과가 나옵니다. cyl이 4인 그룹 안에서 wt 내림차순으로 쭉 나온 다음에, cyl이 6인 그룹에서 wt 내림차순으로.

     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  24.4     4 147.     62  3.69  3.19  20       1     0     4     2
 2  22.8     4 141.     95  3.92  3.15  22.9     1     0     4     2
 3  21.4     4 121     109  4.11  2.78  18.6     1     1     4     2
 4  21.5     4 120.     97  3.7   2.46  20.0     1     0     3     1
 5  22.8     4 108      93  3.85  2.32  18.6     1     1     4     1
 6  32.4     4  78.7    66  4.08  2.2   19.5     1     1     4     1
 7  26       4 120.     91  4.43  2.14  16.7     0     1     5     2
 8  27.3     4  79      66  4.08  1.94  18.9     1     1     4     1
 9  33.9     4  71.1    65  4.22  1.84  19.9     1     1     4     1
10  30.4     4  75.7    52  4.93  1.62  18.5     1     1     4     2
11  30.4     4  95.1   113  3.77  1.51  16.9     1     1     5     2
12  18.1     6 225     105  2.76  3.46  20.2     1     0     3     1
13  19.2     6 168.    123  3.92  3.44  18.3     1     0     4     4
14  17.8     6 168.    123  3.92  3.44  18.9     1     0     4     4
15  21.4     6 258     110  3.08  3.22  19.4     1     0     3     1
16  21       6 160     110  3.9   2.88  17.0     0     1     4     4
17  19.7     6 145     175  3.62  2.77  15.5     0     1     5     6
18  21       6 160     110  3.9   2.62  16.5     0     1     4     4
19  10.4     8 460     215  3     5.42  17.8     0     0     3     4
20  14.7     8 440     230  3.23  5.34  17.4     0     0     3     4
반응형