R에서 열 (column) 이름을 바꾸는 방법은 크게 두가지가 있습니다. 우선 별 다른 library 없이 데이터프레임 안에서 바꿀 경우는 colnames()를 쓰면 됩니다.
colnames(df)[1]<-'New column'
위 명령어는 df라는 데이터의 첫번째 열을 'New column'이라는 이름으로 바꾸라는 의미입니다. 그러나 최근에는 dplyr library를 많이 쓰면서 다음과 같이 바꾸기도 합니다. 참고로 dplyr는 데이터를 바꿔줄 때, tidyr는 클렌징을 할 때 많이 쓰는 library입니다.
library(dplyr)
rename(df, new_column=old_column)
위의 명령어가 사실 저 직관적이죠? 그래서 dplyr를 많이 쓰는 것 같습니다. rename 명령어 후에는 새로운 열 이름이 먼저 오고 (new_column) 그 다음에 기존 컬럼 이름(old_column)이 나중에 오는 걸 유의하셔야 합니다.
그런데 만약에 바꿔야 할 열이 너무 많아서 일일이 저 명령어를 치기 조금 귀찮다면 어떻게 해야 할까요? 예를 들어 기존 열 이름이 a1, a2, ...a10까지 가는데 이걸 b1, b2,... b10으로 바꾸려면? 여전히 rename으로 다음과 같이 해주는 게 좋다고 생각하지만, 이 때는 %>%라는 연산자를 이용해서 하는 게 좀 편합니다. %>%는 앞의 명령어를 한 다음에 그 다음 것을 해라는 연산자 정도로 생각해주시면 됩니다.
df %>% rename(b1=a1, b2=a2, ...., b10=a10)
아예 벡터를 만들어서 rename 한 칼에 해주는 것도 나쁘지 않은 것 같습니다.
oldnames=c('a1', 'a2' ... ,'a10')
newnames=c('b1', 'b2', ... ,'b10')
df %>%remane_at(vars(oldnames), ~newnames)
검색을 해보니 data.table이라는 library를 통해서 하기도 하네요. 열 이름이 중구난방이라면 data.table의 setnames을 통해서 일괄적으로 바꿔주는것도 좋은 옵션이 될 듯 합니다.
library(data.table)
setnames(df, old = c('a1','a2', .. 'a10'), new = c('b1','b2', .. 'b10'))
'R > R basic' 카테고리의 다른 글
이름이 비슷한 csv 파일을 불러서 통합해서 하나의 데이터프레임을 만들 경우 (0) | 2020.05.08 |
---|---|
내가 갖고 있는 데이터의 형태는 데이터프레임인가? (0) | 2020.05.07 |
특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 (0) | 2020.05.04 |
열(column) 새롭게 추가하기 (0) | 2020.05.03 |
[R기본] R로 데이터프레임 만들기, 행&열 뽑기, 부분 집합, 그리고 순서 (0) | 2020.04.26 |