반응형
아래와 같은 데이터 프레임을 만들었다고 치자
> name <- c("철수", "영희", "길동")
> age <- c(21, 20, 31)
> gender <- factor(c("M", "F", "M"))
> characters <- data.frame(name, age, gender)
> characters
name age gender
1 철수 21 M
2 영희 20 F
3 길동 31 M
여기서 factor인 gender를 이용해서 조건에 맞는 행을 선택할 때 다음과 같은 코드를 작성한다고 해보자
> characters [characters$gender == 'M']
name gender
1 철수 M
2 영희 F
3 길동 M
> characters [characters$age < 30 & characters$gender == 'M']
name
1 철수
2 영희
3 길동
나는 characters 데이터 프레임의 gender 열이 M인 행을 골라내고 싶은데 결과가 이상하게 나온다.
factor 데이터 타입인 gender의 문제도 아니다.
> characters [age == 21]
name
1 철수
2 영희
3 길동
age를 기준으로 21살인 사람의 행을 출력하려고 해도 값이 이상하다.
원인은 추출할 조건을 [행조건, 열조건] 형식으로 작성하지 않아서이다.
> characters [characters$gender == 'M',]
name age gender
1 철수 21 M
3 길동 31 M
> characters [characters$age < 30 & characters$gender == 'M',]
name age gender
1 철수 21 M
> characters [age == 21,]
name age gender
1 철수 21 M
> characters [name == "철수", 2]
[1] 21
[행조건, 열조건] 형식을 지켜서 작성하니 정상적으로 data frame에서 내가 원하는 값이 출력된다.
gender가 M인 행을 출력하고 싶으면 행 조건에 [characters$gender == 'M',] 를 작성하고 콤마(,) 뒤의 열 조건을 비워두면 정상적으로 출력된다.
다른 부분도 마찬가지로 행 조건을 작성하고 콤마를 찍어야한다. 그래야 [행조건, 열조건] 의 형식을 충족하여 정상적으로 원하는 행이 선택된다.
반응형
'프로그래밍 > R' 카테고리의 다른 글
mac m1 KoNLP 패키지 설치 과정 (0) | 2023.10.03 |
---|---|
ADsP 한 권으로 끝내기 139P - matrix 응용문제 (0) | 2023.07.27 |
R의 반복문(repeat, while, for) (0) | 2023.03.16 |
벡터에서 값을 추출할 때 NA(Missing Value)와 NULL의 처리 (0) | 2023.03.16 |