獨斷論

통계 R 사용설명서 13 - subset을 이용하여 열(변수)와 행(관측치) 선택 본문

과학과 기술/R 통계

통계 R 사용설명서 13 - subset을 이용하여 열(변수)와 행(관측치) 선택

부르칸 2016. 5. 18. 03:04

데이터 행렬이나 데이터프레임에서 원하는 행과 열만 선택할때 subset()을 이용하면 편하다.

쓰는 방법은 아래와 같다.


subset(데이터변수, 행선택조건식, 열선택)


데이터 변수로는 행렬 벡터 데이터프레임 등이 사용될수 있고, 행선택조건식은 논리식을 사용하며, 열선택에는 select라는 옵션을 사용하게 된다.


어떻게 사용하는지 예를 들기위해 아래와 같은 데이터를 가정하고


1

2

3

4

5

6

7

8

9

10


11

12

13

14

15

16

17

 > id <- c(1, 2, 3, 4, 5)
 > country <- c("Korea", "Japan", "China", "Korea", "Mongol")
 > gender <- c("M", "F", "F", "F", "M")
 > age <- c(20, 21, 53, 82, 25)
 > q1 <- c(10, 3, 5, 8, 4)
 > q2 <- c(7, NA, 4, 5, 9)
 > q3 <- c(9, NA, 8, 9, 9)
 > q4 <- c(8, 6, 10, 4, 5)
 > q5 <- c(3, 6, 8, 3, 5)
 > mydat <- data.frame(id, country, gender, age, q1, q2, q3, q4, q5,
 +                     stringAsFactors = FALSE)
 > mydat
   id country gender age q1 q2 q3 q4 q5 stringAsFactors
 1  1   Korea      M  20 10  7  9  8  3           FALSE
 2  2   Japan      F  21  3 NA NA  6  6           FALSE
 3  3   China      F  53  5  4  8 10  8           FALSE
 4  4   Korea      F  82  8  5  9  4  3           FALSE
 5  5  Mongol      M  25  4  9  9  5  5           FALSE


이 중에서 여자이며 나이가 40인 사람만 선택하고

변수는 id, q1, q5만 선택하여 데이터를 다시 만들고싶다면 아래와 같이 한다.


1

2

3

4

5

 > mydat_n1 <- subset(mydat, gender == "F" & age >= 40, select = c(id, q1, q5))
 > mydat_n1
   id q1 q5
 3  3  5  8
 4  4  8  3


조심해야할 것은 조건식이 여러개일 경우에 이들을 쉼표로 구분하면 안되고 & 즉 AND나 | 즉 OR로 구분해야한다는 것이다. 위 스크립트에서는 AND를 사용하였고 OR를 사용하는 예를 들면 아래와 같다.


1

2

3

4

5

6

 > mydat_n2 <- subset(mydat, gender == "F" | age >= 40, select = id:q5)
 > mydat_n2
   id country gender age q1 q2 q3 q4 q5
 2  2   Japan      F  21  3 NA NA  6  6
 3  3   China      F  53  5  4  8 10  8
 4  4   Korea      F  82  8  5  9  4  3


select = id:q5를 사용하였기에 id에서 q5까지의 변수를 모두 선택하였다.

Comments