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
'R > R basic' 카테고리의 다른 글
열려 있는 데이터(혹은 파일) 제거하기 #2: rm 함수 (0) | 2022.07.01 |
---|---|
문자 앞이나 뒤에 억지로 숫자나 문자를 붙여야 할 때: str_pad 함수 (0) | 2022.06.25 |
연속된 숫자 만들기 rep 함수 (0) | 2022.06.21 |
tidyverse 하나면 웬만한 것 커버된다 (0) | 2022.06.18 |
한국어로 파일 추출이 안 될 때 (sys.setlocale) (0) | 2022.06.15 |