프로그래밍/R

data frame에서 조건에 맞는 행, 열을 출력할 때 유의해야할 점

이자다 2023. 3. 16. 12:07
반응형

아래와 같은 데이터 프레임을 만들었다고 치자

 

> 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',] 를 작성하고 콤마(,) 뒤의 열 조건을 비워두면 정상적으로 출력된다.

 

다른 부분도 마찬가지로 행 조건을 작성하고 콤마를 찍어야한다. 그래야 [행조건, 열조건] 의 형식을 충족하여 정상적으로 원하는 행이 선택된다.

반응형