[R] 데이터 프레임 특정 행/열 추출하기 (subset)

해당 포스트는 네이버지식인을 통해 질문 받은 "데이터 프레임 특정 행/열 추출하는 방법"에 대한 답변을 공유하는 글입니다.

how-to-subset-and-filter-in-dataframe-using-r

질문

R 데이터프레임 특정 행/열 추출 질문..
1번 사진을 2번 사진처럼 바꾸고 싶은데 어떻게 해야할까요?

how-to-subset-and-filter-in-dataframe-using-r
[출처] 네이버지식인

풀이

아래에서는 R에서 제공하는 subset() 함수를 이용해 데이터 프레임(Data Frame)에서 원하는 서브셋 데이터를 추출하는 방법을 설명합니다. subset() 함수는 데이터 프레임에서 조건에 맞는 행을 추출할 수 있도록 도와주는 함수로, 간단하고 유용한 함수 중 하나입니다.

1. 데이터 생성

먼저 질문에서 언급된 사진의 데이터를 생성하겠습니다. 생성된 데이터는 mydata 변수에 저장합니다.

mydata <- data.frame(
  name = c("철수", "영희", "길동", "상철", "미숙", "영철", "영우"),
  gender = c("M", "F", "M", "M", "F", "M", "M"),
  funny = c("High", "Med", "Low", "High", "Med", "Med", "High"),
  age = c(21, 21, 22, 30, 25, 25, 28),
  age.month = c(252, 252, 264, 360, 300, 300, 336)
)

mydata
  name gender funny age age.month
1 철수      M  High  21       252
2 영희      F   Med  21       252
3 길동      M   Low  22       264
4 상철      M  High  30       360
5 미숙      F   Med  25       300
6 영철      M   Med  25       300
7 영우      M  High  28       336

2. 서브셋 데이터 추출

생성된 mydata 변수에서 질문에서 요구되는 형태로 서브셋 데이터를 추출하는 코드는 아래와 같습니다. 아래 코드는 name이 "영희" 또는 "미숙"인 행에서 nameage 컬럼만 추출합니다.

subset(mydata, name %in% c("영희", "미숙"), select = c(name, age))
  name age
2 영희  21
5 미숙  25

위 출력 결과를 보면, 질문에서 요구된 바와 같이 "영희"와 "미숙"의 nameage열이 추출된 것을 볼 수 있습니다.

마무리

아번 포스트에선는 데이터 프레임(Data Frame)에서 원하는 부분 데이터셋(서브셋)을 추출하는 방법에 대하여 설명하였습니다. subset() 함수는 데이터 프레임에서 필요한 부분을 간단하게 추출할 수 있도록 도와주는 유용한 함수로, 조건에 맞는 행을 추출할 때, select 매개변수를 이용해 원하는 열을 선택할 수 있습니다. 이를 통해, 데이터 프레임에서 필요한 정보를 빠르고 간편하게 추출할 수 있습니다.

관련 링크

[1] 네이버 지식인
[2] [R] as.factor 함수로 데이터셋 분할하기
[3] [R] 3개 이상의 데이터 프레임 병합하기 (merge, left_join)