데이터를 만듭시다.
name <- c("철수", "영희", "길동")
age <- c(21, 20, 31)
gender <- factor(c("M", "F", "M"))
character <- data.frame(name, age, gender)
성별이 여자 데이터를 가져오고 싶다면
character[(character$gender == "F"), ];
## name age gender
## 2 영희 20 F
그럼 성별이 여자가 아닌 데이터를 가지고 오고싶다면 어떻게 할까요?
직관적으로 -로 하면 어떻게 될까요??
character[-(character$gender == "F"), ];
## name age gender
## 2 영희 20 F
## 3 길동 31 M
결과는 X. 왜 그럴까요? 이유는 논리연산 때문입니다.
(character$gender == "F");
## [1] FALSE TRUE FALSE
!(character$gender == "F");
## [1] TRUE FALSE TRUE
위처럼 해야 TRUE, FALSE로 올바르게 가져오는데
-(character$gender == "F");
## [1] 0 -1 0
character[c(0,-1,0), ];
## name age gender
## 2 영희 20 F
## 3 길동 31 M
-를 사용하면 1번째 데이터를 빼는 것처럼 나오기 때문에 의도된게 안되네요;;;
결론: 성별이 여자가 아닌 데이터를 가져오고 싶다면 논리연산을 씁시다. (논리연산 활용이 늘었네요)
character[!(character$gender == "F"), ];
## name age gender
## 1 철수 21 M
## 3 길동 31 M