Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

섹션 7. Chapter 07 reshape2 패키지 (Youtube HelloJany) 본문

R

섹션 7. Chapter 07 reshape2 패키지 (Youtube HelloJany)

끈기JK 2022. 9. 8. 09:44

■ reshape2 패키지

데이터의 행을 열로, 열을 행으로

 

-melt()

melt(데이터 세트, id.var = "기준 열", measure.vars = "변환 열")

install.packages("reshape2")
library(reshape2)

str(airquality)

head(airquality)  # airquality 데이터 세트 확인
names(airquality) <- tolower(names(airquality))  # 소문자로 변환

melt_test <- melt(airquality)  # melt() 함수 적용하여 데이터를 melt_test 변수에 할당
head(melt_test)

tail(melt_test)  # 뒤에서 1행부터 6행까지 출력하기

# 변형한 데이터를 melt_test2 변수에 할당
melt_test2 <- melt(airquality, id.vars = c("month", "wind"), measure.vars = "ozone")

head(melt_test2)

결과

> str(airquality)
'data.frame':	153 obs. of  6 variables:
 $ ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
 $ solar.r: int  190 118 149 313 NA NA 299 99 19 194 ...
 $ wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
 $ temp   : int  67 72 74 62 56 66 65 59 61 69 ...
 $ month  : int  5 5 5 5 5 5 5 5 5 5 ...
 $ day    : int  1 2 3 4 5 6 7 8 9 10 ...
> head(airquality)  # airquality 데이터 세트 확인
  ozone solar.r wind temp month day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> names(airquality) <- tolower(names(airquality))  # 소문자로 변환
> melt_test <- melt(airquality)  # melt() 함수 적용하여 데이터를 melt_test 변수에 할당
No id variables; using all as measure variables
> head(melt_test)
  variable value
1    ozone    41
2    ozone    36
3    ozone    12
4    ozone    18
5    ozone    NA
6    ozone    28
> tail(melt_test)  # 뒤에서 1행부터 6행까지 출력하기
    variable value
913      day    25
914      day    26
915      day    27
916      day    28
917      day    29
918      day    30
> # 변형한 데이터를 melt_test2 변수에 할당
> melt_test2 <- melt(airquality, id.vars = c("month", "wind"), measure.vars = "ozone")
> head(melt_test2)
  month wind variable value
1     5  7.4    ozone    41
2     5  8.0    ozone    36
3     5 12.6    ozone    12
4     5 11.5    ozone    18
5     5 14.3    ozone    NA
6     5 14.9    ozone    28

 

 

-cat() 함수

: 세로로 긴 데이터 모양을 가로로 전환

acast() : 벡터, 행렬, 배열 형태를 변환

dcast() : 데이터 프레임 형태를 변환

 

 

-dcast(데이터 세트, 기준 열 ~ 변환 열)

install.packages("reshape2")
library(reshape2)

airquality

names(airquality) <- tolower(names(airquality))  # 소문자로 변환한 변수명으로 기존 변수명 대체
head(airquality)  # airquality 데이터 세트 확인

# airquality 데이터를 변형한 후 aq_melt 변수에 할당
aq_melt <- melt(airquality, id = c("month", "day"), na.rm = TRUE)

head(aq_melt)

# aq_melt 데이터를 변형한 후 aq_dcast 변수에 할당
aq_dcast <- dcast(aq_melt, month + day ~ variable)

head(aq_dcast)  # aq_dcast 데이터 세트 확인

View(airquality)
View(aq_melt)
View(aq_dcast)

 

 

-acast(데이터 세트, 기준 열 ~ 변환 열 ~ 분리 기준 열)

# aq_melt 데이터를 변형한 후 aq_acast 변수에 할당
aq_acast <- acast(aq_melt, month ~ day ~ variable)

head(aq_acast)  # aq_acast 데이터 세트 확인
> aq_acast <- acast(aq_melt, month ~ day ~ variable)
> head(aq_acast)  # aq_dcast 데이터 세트 확인
, , ozone

    1  2  3  4  5  6   7  8   9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
5  41 36 12 18 NA 28  23 19   8 NA  7 16 11 14 18 14 34  6 30 11  1 11  4
6  NA NA NA NA NA NA  29 NA  71 39 NA NA 23 NA NA 21 37 20 12 13 NA NA NA
7 135 49 32 NA 64 40  77 97  97 85 NA 10 27 NA  7 48 35 61 79 63 16 NA NA
8  39  9 16 78 35 66 122 89 110 NA NA 44 28 65 NA 22 59 23 31 44 21  9 NA
9  96 78 73 91 47 32  20 23  21 24 44 21 28  9 13 46 18 13 24 16 13 23 36
  24  25 26 27 28  29  30 31
5 32  NA NA NA 23  45 115 37
6 NA  NA NA NA NA  NA  NA NA
7 80 108 20 52 82  50  64 59
8 45 168 73 NA 76 118  84 85
9  7  14 30 NA 14  18  20 NA

, , solar.r

    1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
5 190 118 149 313  NA  NA 299  99  19 194  NA 256 290 274  65 334 307  78
6 286 287 242 186 220 264 127 273 291 323 259 250 148 332 322 191 284  37
7 269 248 236 101 175 314 276 267 272 175 139 264 175 291  48 260 274 285
8  83  24  77  NA  NA  NA 255 229 207 222 137 192 273 157  64  71  51 115
9 167 197 183 189  95  92 252 220 230 259 236 259 238  24 112 237 224  27
   19  20  21  22  23  24  25  26  27  28  29  30  31
5 322  44   8 320  25  92  66 266  NA  13 252 223 279
6 120 137 150  59  91 250 135 127  47  98  31 138  NA
7 187 220   7 258 295 294 223  81  82 213 275 253 254
8 244 190 259  36 255 212 238 215 153 203 225 237 188
9 238 201 238  14 139  49  20 193 145 191 131 223  NA

, , wind

    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15
5 7.4  8.0 12.6 11.5 14.3 14.9  8.6 13.8 20.1  8.6  6.9  9.7  9.2 10.9 13.2
6 8.6  9.7 16.1  9.2  8.6 14.3  9.7  6.9 13.8 11.5 10.9  9.2  8.0 13.8 11.5
7 4.1  9.2  9.2 10.9  4.6 10.9  5.1  6.3  5.7  7.4  8.6 14.3 14.9 14.9 14.3
8 6.9 13.8  7.4  6.9  7.4  4.6  4.0 10.3  8.0  8.6 11.5 11.5 11.5  9.7 11.5
9 6.9  5.1  2.8  4.6  7.4 15.5 10.9 10.3 10.9  9.7 14.9 15.5  6.3 10.9 11.5
    16   17   18   19   20   21   22   23   24   25   26   27   28   29
5 11.5 12.0 18.4 11.5  9.7  9.7 16.6  9.7 12.0 16.6 14.9  8.0 12.0 14.9
6 14.9 20.7  9.2 11.5 10.3  6.3  1.7  4.6  6.3  8.0  8.0 10.3 11.5 14.9
7  6.9 10.3  6.3  5.1 11.5  6.9  9.7 11.5  8.6  8.0  8.6 12.0  7.4  7.4
8 10.3  6.3  7.4 10.9 10.3 15.5 14.3 12.6  9.7  3.4  8.0  5.7  9.7  2.3
9  6.9 13.8 10.3 10.3  8.0 12.6  9.2 10.3 10.3 16.6  6.9 13.2 14.3  8.0
    30  31
5  5.7 7.4
6  8.0  NA
7  7.4 9.2
8  6.3 6.3
9 11.5  NA

, , temp

   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
5 67 72 74 62 56 66 65 59 61 69 74 69 66 68 58 64 66 57 68 62 59 73 61 61
6 78 74 67 84 85 79 82 87 90 87 93 92 82 80 79 77 72 65 73 76 77 76 76 76
7 84 85 81 84 83 83 88 92 92 89 82 73 81 91 80 81 82 84 87 85 74 81 82 86
8 81 81 82 86 85 87 89 90 90 92 86 86 82 80 79 77 79 76 78 78 77 72 75 79
9 91 92 93 93 87 84 80 78 75 73 81 76 77 71 71 78 67 76 68 82 64 71 81 69
  25 26 27 28 29 30 31
5 57 58 57 67 81 79 76
6 75 78 73 80 77 83 NA
7 85 82 86 88 86 83 81
8 81 86 88 97 94 96 94
9 63 70 77 75 76 68 NA