더북(TheBook)

‘3.3.2 벡터 연산’ 절에서 살펴봤듯이 벡터 간 연산에서의 AND, OR는 &&, ||가 아니라 &, |를 사용해야 한다. 따라서 subset( )에서 2개 이상의 조건을 조합할 때는 &나 |를 사용한다. 다음은 setosa 종에서 Sepal.Length가 5.0 이상인 행을 추출하는 예다.

> subset(iris, Species == "setosa" & Sepal.Length > 5.0)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
...

subset에 select 인자를 지정하면 특정 컬럼을 선택하거나 제외할 수 있다. 다음은 Sepal.Length와 Species 컬럼을 iris에서 선택하여 출력한 예다.

> subset(iris, select=c(Sepal.Length, Species))
   Sepal.Length   Species
1           5.1    setosa
2           4.9    setosa
3           4.7    setosa
4           4.6    setosa
5           5.0    setosa
...

반대로 특정 컬럼을 제외하고자 한다면 –를 컬럼 이름 앞에 붙인다.

> subset(iris, select=-c(Sepal.Length, Species))
   Sepal.Width Petal.Length Petal.Width
1          3.5          1.4         0.2
2          3.0          1.4         0.2
3          3.2          1.3         0.2
4          3.1          1.5         0.2
5          3.6          1.4         0.2
...

select에서 컬럼을 제외하는 방법을 names( )와 %in%을 사용하여 제외하는 방법과 비교해서 알아두기 바란다.

> iris[, !names(iris) %in% c("Sepal.Length", "Species")]
   Sepal.Width Petal.Length Petal.Width
1          3.5          1.4         0.2
2          3.0          1.4         0.2
3          3.2          1.3         0.2
4          3.1          1.5         0.2
5          3.6          1.4         0.2
...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.