앞서 칼럼(column)제거하는 글을 올렸는데 정작 열을 제거하는 법은 올리지 않았네요.
특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 (tistory.com)
특정 열(column)만 선택 (keep) 혹은 제거(drop)하기
R에서 특정 열(칼럼)을 선택 혹은 제거하는 방법은 적어도 3~4가지는 되는 것 같습니다. 우선, 데이터프레임을 하나 만들어봅니다. a df라는 데이터프레임에 각각 number, fruit, TF라는 칼럼이 있는데,
approximation.tistory.com
칼럼을 제거하는 법은 그냥 NULL을 쓰거나 subset 함수를 이용하라고 했는데, 열(row)을 제거하는 법은 그냥 더 간단합니다. 예를 들어 아래와 같은 경우가 있다고 해보죠. stackoverflow에 나온 질문을 다시 한 번 적어보도록 하겠습니다.
질문자는 위에서 1,3,5,7이라고 적힌 열만 유지하고 2,4,6이 있는 열은 제거하고 싶다고 했는데, 이 경우 가장 많이 쓰이는 방식은 다음과 같습니다. 만약 위 데이터프레임 이름이 df라고 한다면,
df <- df[-c(2, 4, 6), ]
이 명령어는 그냥 2번째, 4번째, 6번째 열을 제거한 나머지만 갖고 새로운 데이터를 만들어라 입니다 (맨 처음 A, B, C, D는 칼럼 이름이지 열이 아닙니다).
그런데 이렇게 하면 일일이 열 번호를 세서 수동적으로 제거해야 주니까 좀 불편할 수 있죠. 열 번호를 잘못 세면 그것도 그거대로 문제이고.. 그래서 조건을 줘서 제거하는 방식이 있는데 %in%를 이용해서 하는 제거해보려고 합니다. 맨 처음 칼럼 이름이 id라고 한다면,
첫번째 칼럼과 2, 4, 6이 들어간 벡터와 비교해서( %in%), 이 둘이 겹치는 것을 제외한(!)것만 뽑아서 새 데이터 프레임을 만들어라. 아래처럼 하면 됩니다. %in%는 그냥 쉽게 얘기해서 겹치면 true, 안 겹치면 false로 계산하는 함수입니다. id가 2,4,6이라는 겹치는 걸 제외한 것만 기존 데이터베이스에 놓아둬라 (!를 쓴 이유)
df <- df[ !(df$id %in% c(2,4,6)), ]
만약에 그런 게 아니라 특정 조건을 갖고 열을 뽑고 싶다고 하면 제일 좋은 건 subset함수를 쓰는 겁니다.
조건을 걸어 자료 추출하기
데이터프레임 자료를 조건을 걸어 추출하기 위한 방법은 기본적으로 subset을 사용할 때와 그렇지 않을 때가 있습니다. mtcars subset(mtcars, subset=mpg mpg 20이하만 뽑아라입니다. 간단하죠? 다른 방식으
approximation.tistory.com
하나만 더 해볼까요? 예를 들어 c2라는 칼럼이 있는데 여기에 missing value (결측)이 있는 경우 그 열을 drop하라고 해라 하면 어떻게 하면 될까요? 역시 tidyverse에서는 간단하게 아래와 같이 하면 됩니다. drop_na라는 함수를 이용하면 됩니다.
library(tidyverse)
df<-df%>%drop_na("c2")
만약에 c2, c3 열 두 개 중에 missing이 하나라도 있으면 떨어뜨려라고 하면
df<-df%>%drop_na(c("c2", "c3"))
'R > R basic' 카테고리의 다른 글
한국어로 파일 추출이 안 될 때 (sys.setlocale) (0) | 2022.06.15 |
---|---|
특정 조건 행 (row) 갯수 세기 dplyr::count (0) | 2022.06.14 |
데이터프레임을 엑셀파일로 변환? 그냥 csv파일로 바꾸자 (write.csv) (0) | 2022.01.12 |
엑셀 파일 부르기, sheet별로 불러서 통합하기 (read_excel) (0) | 2022.01.10 |
string 문자열 알파벳 세기, 문자열 합치기, 일부 보이기 (str_length, str_c, str_sub) (0) | 2021.12.07 |