이번 포스팅에서는 R data.frame에서 여러개의 칼럼 이름을 '변경 전 칼럼 이름 : 변경 후 칼럼 이름'의 매핑 테이블 (old_column_name : new_column_name mapping table) 을 이용해서 한꺼번에 변경하는 방법을 소개하겠습니다. data.frame에 칼럼 개수가 엄청 많고, 특정 칼럼에 대해서 선별적으로 칼럼 이름을 변경하고 싶을 때 전:후 칼럼 이름 매핑 테이블을 사용하는 이번 포스팅의 방법을 사용하면 편리합니다. 

 

renaming column names using mapping table in R data.frame

 

 

(1) 모든 칼럼을 순서대로 칼럼 이름을 변경하고 싶은 경우

 

참고로, R 에서 names(), rename() 등의 함수를 이용해서 칼럼 이름을 변경하는 방법은 https://rfriend.tistory.com/41 를 참고하세요. 

 

 

먼저, "X1" ~ "X10" 까지의 10개 칼럼을 가지는 예제 data.frame 을 만들어보겠습니다. 

 

## -- creating a sample data.frame with 10 columns
df <- data.frame(matrix(1:30, nrow=3))

print(df)
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
# 1  1  4  7 10 13 16 19 22 25  28
# 2  2  5  8 11 14 17 20 23 26  29
# 3  3  6  9 12 15 18 21 24 27  30

 

 

다음으로, '변경 전 칼럼 이름 : 변경 후 칼럼 이름' 매핑 테이블을 만들어보겠습니다. 아래 예제에서는 변경 전 칼럼 이름 "X1"~"X10" 을 --> 변경 후 칼럼 이름 "var1"~"var10" 의 매핑 테이블 data.frame을 만들었습니다. (특정 칼럼만 선별적으로 변경하고 싶으면 해당 칼럼의 "변경 전 : 변경 후 매핑 테이블"을 만들면 됩니다.)

 

## -- creating a key(old column name):value(new column name) mapping table
old_col_nm <- names(df)
print(old_col_nm)
# [1] "X1"  "X2"  "X3"  "X4"  "X5"  "X6"  "X7"  "X8"  "X9"  "X10"

col_cnt <- ncol(df) # 10
new_col_nm <- paste0(c(rep("var", col_cnt)), 1:col_cnt)
print(new_col_nm)
# [1] "var1"  "var2"  "var3"  "var4"  "var5"  "var6"  "var7"  "var8"  "var9"  "var10"

df_col_dict <- data.frame("old_col_nm" = old_col_nm, "new_col_nm" = new_col_nm)
print(df_col_dict)
# old_col_nm new_col_nm
# 1          X1       var1
# 2          X2       var2
# 3          X3       var3
# 4          X4       var4
# 5          X5       var5
# 6          X6       var6
# 7          X7       var7
# 8          X8       var8
# 9          X9       var9
# 10        X10      var10

 

 

 

마지막으로, dplyr 패키지의 rename_at() 함수를 사용해서 "변경 전 칼럼 이름(old_col_nm)"을 "변경 후 칼럼 이름(new_col_nm)" 으로 변경해 보겠습니다. 

 

## -- changing data.frame's column names using key(old_col):value(new_col) mapping table
library(dplyr)
df_new <- df %>% 
  rename_at(vars(as.character(df_col_dict$old_col_nm)), 
            ~ as.character(df_col_dict$new_col_nm))

print(df_new)
# var1 var2 var3 var4 var5 var6 var7 var8 var9 var10
# 1    1    4    7   10   13   16   19   22   25    28
# 2    2    5    8   11   14   17   20   23   26    29
# 3    3    6    9   12   15   18   21   24   27    30

 

 

 

(2) 특정 칼럼만 선별적으로 이름을 바꾸고 싶은 경우

 

아래의 'col_dict' 테이블을 칼럼 이름을 변경하고자 하는 특정 칼럼의 old_col_nm : new_col_nm 으로 만들어서 적용하면 됩니다.

가령, 기존의 c1~c5'까지의 칼럼들 중에서 'c2', 'c4' 의 2개 칼럼만 선별적으로 변경하고 싶으면 아래처럼 'col_dict' 테이블을 만들어서 적용하면 돼요.

 

old_col_nm = c("c2", "c4")
new_col_nm = c("v2", "v4")

col_dict <- data.frame("old" = old_col_nm, "new" = new_col_nm)
print(col_dict)
# old new
# 2 c2 v2
# 4 c4 v4


library(dplyr)
c_df_new <- c_df %>%
rename_at(vars(as.character(col_dict$old)), ~ as.character(col_dict$new))

print(c_df_new)
# c1 v2 c3 v4 c5
# 1 1 4 7 10 13
# 2 2 5 8 11 14
# 3 3 6 9 12 15

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요!  :-)

 

반응형
Posted by Rfriend

댓글을 달아 주세요

  1. 오규현 2022.01.28 10:27  댓글주소  수정/삭제  댓글쓰기

    R 에서 파일 리스트를 불러오는데 파일 이름이 깨집니다 ㅠㅠ 어떻게해야될까요?

    전에 컴퓨터에서는 괜찮앗는데... 컴퓨터 바꾸고 새로 깐 R에서 문제가 생깁니다.

    텍스트 비슷한 파일 리스트를 불러오면 한자와 숫자가 막섞여잇습니다 ㅠㅠ 도와주세요

  2. 오규현 2022.01.28 12:35  댓글주소  수정/삭제  댓글쓰기

    R 스크립트를 불러오는건 한글로 잘 불러와집니다.
    문제가 생기는건 디렉토리 설정후 엑셀 파일 20개이상 을 불러오는데 엑셀 파일명이 한자 섞여서 나옵니다.. R 스튜디오가 아닌 R로 실행하면 파일명이 제대로 나오는데 스튜디오에서 하는 것이 문제가 생깁니다 ㅠㅠ

    • Rfriend 2022.01.28 12:36 신고  댓글주소  수정/삭제

      아래 링크. 참고해보세요.

      RStudio 가 한글 계정을 인식하지 못해서 에러가 날 때 : ☞ 영문 사용자계정 만들기 - https://rfriend.tistory.com/306

  3. 오규현 2022.01.28 12:38  댓글주소  수정/삭제  댓글쓰기

    네 선생님....저것도 다 똑같이 설정되어잇습니다
    애초에 윈도우 설치할때 영어계정 이였습니다...방법을 못찾겟습니다..

  4. 오규현 2022.01.28 12:49  댓글주소  수정/삭제  댓글쓰기

    그래도 답변 감사합니다...ㅠㅠ

  5. 김명석 2022.06.20 16:51  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 글 잘 읽고 있습니다. 굼금한게 있는데 글 목록이 상단에 최신거 10개만 보여서 제목 목록을 쭉 보는 방법이 없나 궁금합니다.

    • Rfriend 2022.06.20 17:08 신고  댓글주소  수정/삭제

      제 블로그 글 목록 말씀하시는 건가요?
      그거 제가 상단에 10개만 보이라고 설정을 해둬서 그래요. 저녁에 집에 가면 20개 보이도러구설정 바꿔 놓을께요