전체서비스
새글보기

따봉브라질

커뮤니티

분류1

컴퓨터

제목

[R] subset 함수로 데이터 추출하기

R 데이터 처리 & 분석

[R] subset 함수로 데이터 추출하기

love R 2020. 1. 18. 05:06

 

subset 함수는 변수 선택 및 조건에 맞는 데이터 추출에 유용합니다.
따라서 데이터전처리시에 필수적으로 알아놓아야 하는 내용이기도 합니다.
subset을 사전에 쳐보면 ’부분집합’이라고 합니다.

 

 subset함수를 사용하면 원래있던 데이터셋에서 ’추출’을 하기 때문에 부분집합이라는 개념이 됩니다.

수학적 정의로 접근하면 더 쉽습니다. “집합 B의 부분집합 A는, 모든 원소가 B에도 속하는 집합이다. 이런 관계를 주로 A ⊆ B라 표기한다. 예를 들어 집합 {1, 2}는 {1, 2, 3}의 부분집합이다.”

 

부분집합의 정의를 subset 함수에 적용하겠습니다.
“원시 데이터(집합B)에서 추출한 데이터(집합A)는 모든 요소가 원시 데이터(집합B)에도 속하는 데이터이다.”
이 개념은 원시 데이터로부터 특정 조건에 맞는 추출한 데이터가 원시 데이터에도 속하는 데이터라는 것입니다.

함수명 앞에 ? 을 쓰면 그 함수의 자세한 설명이 나옵니다.

입력창에 ?subset라고 쓰고 실행시켜봅시다.

 

 


.

위의 내용을 표로 정리하겠습니다.

 

 

 

변수 추출에는 select 인자를 사용합니다. iris 데이터에서 Sepal.Length 와 Petal.Width 변수만 추출합니다.

test1 <- subset(iris,select=c(Sepal.Length,Petal.Width))
head(test1)
  Sepal.Length Petal.Width
1          5.1         0.2
2          4.9         0.2
3          4.7         0.2
4          4.6         0.2
5          5.0         0.2
6          5.4         0.4

 

 

변수를 제외하는 방법은 변수 앞에 - 를 붙여줍니다.

test2 <- subset(iris,select= -Sepal.Length)
head(test2)
  Sepal.Width Petal.Length Petal.Width Species
1         3.5          1.4         0.2  setosa
2         3.0          1.4         0.2  setosa
3         3.2          1.3         0.2  setosa
4         3.1          1.5         0.2  setosa
5         3.6          1.4         0.2  setosa
6         3.9          1.7         0.4  setosa

 

 

특정 조건을 만족하는 데이터를 추출하겠습니다.
이때 subset이라는 인자를 쓰게 될 것인데, 간단한 예를 보겠습니다. Sepal.Length의 값이 5 이상인 데이터를 추출합니다.

test3 <- subset(iris,subset = Sepal.Length >= 5)
head(test3)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
8           5.0         3.4          1.5         0.2  setosa
11          5.4         3.7          1.5         0.2  setosa
15          5.8         4.0          1.2         0.2  setosa

 

헷갈리지 말아야 할 것이 하나 있습니다.

subset(iris,subset = Sepal.Length >= 5)

여기서 앞에 있는 subset 과 뒤에 있는 subset은 의미가 다릅니다.
맨 앞의 subset은 subset 이라는 함수를 쓴다는 뜻입니다.
뒤 쪽의 subset은 subset 함수의 ‘subset’ 이라는 Argument(전달인자)가 있다는 것입니다.

 

 

 

이제 다중 조건식을 걸어서 데이터를 추출하겠습니다.

Sepal.Length의 값이 5 이상이고 Petal.Length의 값이 2 이상인 데이터를 추출합니다.
두 가지 조건이 함께 만족해야 합니다(교집합).
이렇게 같이 동시에 만족해야할 경우 조건식 & 조건식 을 이용합니다.

test3 <- subset(iris,subset = Sepal.Length >= 5 & Petal.Length>=2)
head(test3)
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
51          7.0         3.2          4.7         1.4 versicolor
52          6.4         3.2          4.5         1.5 versicolor
53          6.9         3.1          4.9         1.5 versicolor
54          5.5         2.3          4.0         1.3 versicolor
55          6.5         2.8          4.6         1.5 versicolor
56          5.7         2.8          4.5         1.3 versicolor

 

 

 

하지만 두 가지 조건중 하나만 만족하는 경우도 있겠죠 Sepal.Length의 값이 5 이상 또는 Petal.Length의 값이 3 이하인 데이터를 추출합니다.
이 때는 조건이 둘 중 하나만 만족하면 되고 조건식 | 조건식 으로 작성해봅시다(합집합).

test4 <- subset(iris,subset = Sepal.Length >= 5| Petal.Length<=3)
head(test4)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

 

 

문자로 된 값을 추출할 수도 있습니다. Species 가 ‘versicolor’ 인 데이터를 추출합니다.

test5 <- subset(iris,subset = Species =='versicolor')
head(test5)
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
51          7.0         3.2          4.7         1.4 versicolor
52          6.4         3.2          4.5         1.5 versicolor
53          6.9         3.1          4.9         1.5 versicolor
54          5.5         2.3          4.0         1.3 versicolor
55          6.5         2.8          4.6         1.5 versicolor
56          5.7         2.8          4.5         1.3 versicolor

 

 

여기서 응용을 해보면
Species 가 ‘versicolor’ 이고 Sepal.Width 가 2이하인 데이터를 추출할 수도 있습니다.

test6 <- subset(iris,subset = Species =='versicolor' & Sepal.Width<=2)
test6
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
61            5           2          3.5           1 versicolor

위 조건을 만족하는 건 150개의 데이터에서 하나의 케이스가 있네요.

이 외에도 여러 조건으로 바꿔가며 실습해보세요~!
궁금한 점이 있다면 댓글로 달아주시고 공감 꾹 눌러주시면 큰 힘이 됩니다^^

 

 

 

 

 

 

 

 

 

 

 

 

 

 https://jobmanager1.tistory.com/52

 

스팸방지코드 :
번호제목등록자등록일조회수
76컴퓨터 윈도우 10 + 오피스 365 정품키 약 5000원

naver21

2021.06.079,377
75컴퓨터 한글 2018 무료 설치 (크랙X, 체험판X)

naver21

2021.06.0713,044
74컴퓨터 blackhole 맥 지우기

naver21

2021.04.0510,716
73컴퓨터 윈도우 10 화면 멈춤 현상 해결 방법

naver21

2021.03.298,614
72컴퓨터 AMD 드라이브 칩셋 자동 감지 설치

naver21

2021.03.215,807
71컴퓨터 AMD 프리징 증상 해결 방법

naver21

2021.03.216,691
70컴퓨터 R 프로그래밍 attach

naver21

2021.03.175,525
69컴퓨터 [R] subset 함수로 데이터 추출하기

naver21

2021.03.176,470
68컴퓨터 R&R스튜디오 설치 하기

naver21

2021.03.1125,738
67컴퓨터 구글원격 - 핸드폰으로 컴퓨터 원격 제어

naver21

2020.10.2710,014
1234 5 페이지로 이동