3. arrange 함수 : 순서대로 정렬하기

exam <- read.csv("csv_exam.csv")
dplyr::glimpse(exam)
## Observations: 20
## Variables: 5
## $ id      <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ class   <int> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, ...
## $ math    <int> 50, 60, 45, 30, 25, 50, 80, 90, 20, 50, 65, 45, 46, 48...
## $ english <int> 98, 97, 86, 98, 80, 89, 90, 78, 98, 98, 65, 85, 98, 87...
## $ science <int> 50, 60, 78, 58, 65, 98, 45, 25, 15, 45, 65, 32, 65, 12...

(1) 오름차순으로 정렬하기

  • math 오름차순으로 정렬
exam %>% arrange(math)
##    id class math english science
## 1   9     3   20      98      15
## 2   5     2   25      80      65
## 3   4     1   30      98      58
## 4   3     1   45      86      78
## 5  12     3   45      85      32
## 6  13     4   46      98      65
## 7  14     4   48      87      12
## 8   1     1   50      98      50
## 9   6     2   50      89      98
## 10 10     3   50      98      45
## 11 16     4   58      98      65
## 12  2     1   60      97      60
## 13 11     3   65      65      65
## 14 17     5   65      68      98
## 15 15     4   75      56      78
## 16 20     5   78      83      58
## 17  7     2   80      90      45
## 18 18     5   80      78      90
## 19 19     5   89      68      87
## 20  8     2   90      78      25

(2) 내림차순으로 정랼하기

  • 기준변수를 desc() 에 적용
exam %>% arrange(desc(math))
##    id class math english science
## 1   8     2   90      78      25
## 2  19     5   89      68      87
## 3   7     2   80      90      45
## 4  18     5   80      78      90
## 5  20     5   78      83      58
## 6  15     4   75      56      78
## 7  11     3   65      65      65
## 8  17     5   65      68      98
## 9   2     1   60      97      60
## 10 16     4   58      98      65
## 11  1     1   50      98      50
## 12  6     2   50      89      98
## 13 10     3   50      98      45
## 14 14     4   48      87      12
## 15 13     4   46      98      65
## 16  3     1   45      86      78
## 17 12     3   45      85      32
## 18  4     1   30      98      58
## 19  5     2   25      80      65
## 20  9     3   20      98      15
  • 정렬 기준으로 삼을 변수를 여러개 지정하려면 쉼표를 이용해 변수명을 나열하면 됨.
exam %>% arrange(class, math)
##    id class math english science
## 1   4     1   30      98      58
## 2   3     1   45      86      78
## 3   1     1   50      98      50
## 4   2     1   60      97      60
## 5   5     2   25      80      65
## 6   6     2   50      89      98
## 7   7     2   80      90      45
## 8   8     2   90      78      25
## 9   9     3   20      98      15
## 10 12     3   45      85      32
## 11 10     3   50      98      45
## 12 11     3   65      65      65
## 13 13     4   46      98      65
## 14 14     4   48      87      12
## 15 16     4   58      98      65
## 16 15     4   75      56      78
## 17 17     5   65      68      98
## 18 20     5   78      83      58
## 19 18     5   80      78      90
## 20 19     5   89      68      87

mpg 데이터를 이용한 분석

**Q1. “audi” 에서 생산한 자동차 중에 어떤 자동차 모델의 hwy(고속도로 연비)가 높은지 알아보려고 한다. “audi” 에서 생산한 자동차 중 hwy가 1~5위에 해당하는 자동차의 데이터를 출력하세요.

mpg_audi <- mpg %>% filter(manufacturer == "audi")
mpg_audi %>% arrange(desc(hwy)) %>% head(5)
## # A tibble: 5 x 11
##   manufacturer      model displ  year   cyl      trans   drv   cty   hwy
##          <chr>      <chr> <dbl> <int> <int>      <chr> <chr> <int> <int>
## 1         audi         a4   2.0  2008     4 manual(m6)     f    20    31
## 2         audi         a4   2.0  2008     4   auto(av)     f    21    30
## 3         audi         a4   1.8  1999     4   auto(l5)     f    18    29
## 4         audi         a4   1.8  1999     4 manual(m5)     f    21    29
## 5         audi a4 quattro   2.0  2008     4 manual(m6)     4    20    28
## # ... with 2 more variables: fl <chr>, class <chr>