워라밸 중독자

[R] 데이터 전처리 - 열 또는 행 이름 확인 및 변경하기 본문

코딩, 딱 지금이 시작할때! (코딱지)

[R] 데이터 전처리 - 열 또는 행 이름 확인 및 변경하기

Ufungi 2023. 1. 19. 09:48

패키지 설치 및 로드

tibble과 dplyr 패키지 필요

install.packages('tibble')
install.packages('dplyr')
library(tibble)
library(dplyr)

R에 내장된 mtcars 데이터셋을 이용하겠습니다.

> mtcars
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 23 rows ]

이름 확인 및 변경

열 이름 확인

names(), colnames()

names와 colnames 함수는 거의 똑같다고 보면 된다.

# 열 이름 출력
> names(mtcars)
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
> colnames(mtcars)
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

열 이름 변경

names(), colnames()

 # 열 이름 변경 (첫번째 세번째 열)
> names(mtcars)[c(1,3)] <- c("miles per gallon", "displacement")
> names(mtcars)
 [1] "miles per gallon" "cyl"              "displacement"     "hp"               "drat"             "wt"               "qsec"             "vs"              
 [9] "am"               "gear"             "carb"            

> colnames(mtcars)[c(1,3)] <- c("mpg", "disp")
> colnames(mtcars)
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

rename()

rename(데이터프레임, "바꿀 열 이름" = "원래 열 이름")

> rename(mtcars, c("weight" = "wt", "miles per gallon" = "mpg", "displacement" = "disp"))
                  miles per gallon cyl displacement  hp drat weight  qsec vs am gear carb
Mazda RX4                     21.0   6        160.0 110 3.90  2.620 16.46  0  1    4    4
Mazda RX4 Wag                 21.0   6        160.0 110 3.90  2.875 17.02  0  1    4    4
Datsun 710                    22.8   4        108.0  93 3.85  2.320 18.61  1  1    4    1
Hornet 4 Drive                21.4   6        258.0 110 3.08  3.215 19.44  1  0    3    1
Hornet Sportabout             18.7   8        360.0 175 3.15  3.440 17.02  0  0    3    2
Valiant                       18.1   6        225.0 105 2.76  3.460 20.22  1  0    3    1
Duster 360                    14.3   8        360.0 245 3.21  3.570 15.84  0  0    3    4
Merc 240D                     24.4   4        146.7  62 3.69  3.190 20.00  1  0    4    2
Merc 230                      22.8   4        140.8  95 3.92  3.150 22.90  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 23 rows ]
 
> names(mtcars) # 열 이름을 확인해보니 rename 함수는 원본 데이터의 열 이름을 바꾸지는 않는다.
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"

행 이름 확인

rownames()

> rownames(mtcars)
 [1] "Mazda RX4"           "Mazda RX4 Wag"       "Datsun 710"          "Hornet 4 Drive"      "Hornet Sportabout"   "Valiant"             "Duster 360"         
 [8] "Merc 240D"           "Merc 230"            "Merc 280"            "Merc 280C"           "Merc 450SE"          "Merc 450SL"          "Merc 450SLC"        
[15] "Cadillac Fleetwood"  "Lincoln Continental" "Chrysler Imperial"   "Fiat 128"            "Honda Civic"         "Toyota Corolla"      "Toyota Corona"      
[22] "Dodge Challenger"    "AMC Javelin"         "Camaro Z28"          "Pontiac Firebird"    "Fiat X1-9"           "Porsche 914-2"       "Lotus Europa"       
[29] "Ford Pantera L"      "Ferrari Dino"        "Maserati Bora"       "Volvo 142E"

행 이름 변경

rownames()

# 첫번째 행 이름 변경
> rownames(mtcars)[1] <- "aaaaaaaaa"
> mtcars
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
aaaaaaaaa         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 23 rows ]

column_to_rownames(), rownames_to_column()

column_to_rownames(): 열을 행 이름으로

rownames_to_column(): 행 이름을 열로

# 행 이름을 열로
> mtcars.1 <- rownames_to_column(mtcars, var = "Model")
> mtcars.1
              Model  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1         Mazda RX4 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
2     Mazda RX4 Wag 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
3        Datsun 710 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
4    Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
5 Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
6           Valiant 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
7        Duster 360 14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
8         Merc 240D 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 24 rows ]
 
 # 열을 행 이름으로
> mtcars.1 <- column_to_rownames(mtcars.1, var = "Model")
> mtcars.1
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 23 rows ]

행 이름 삭제

remove_rownames()

> remove_rownames(mtcars)
   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
3 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
4 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
5 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
6 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
7 14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
8 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
9 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
 [ reached 'max' / getOption("max.print") -- omitted 23 rows ]