R의 ifelse 문에 na를 포함하는 방법
종종 R에서 ifelse 문을 사용하여 기존 열의 값을 기반으로 하는 값을 갖는 데이터 프레임에 새 열을 생성할 수 있습니다.
이를 위해 다음 기본 구문을 사용할 수 있습니다.
df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')
그러나 NA 값이 열에 있으면 새 열의 값은 자동으로 NA가 됩니다.
이를 방지하려면 다음과 같이 !is.na() 함수를 사용할 수 있습니다.
df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')
다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.
예: R의 ifelse 문에 NA 포함
다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.
#create data frame df <- data. frame (player=c('A', 'B', 'C', 'D', 'E', 'F'), conf=c('West', NA, 'West', 'East', 'East', 'East'), points=c(30, 35, 11, 18, 14, NA)) #view data frame df player conf points 1 A West 30 2 B <NA> 35 3 C West 11 4 D East 18 5 E East 14 6 F East NA
이제 다음 값을 사용하는 class 라는 새 열을 생성하려고 한다고 가정합니다.
- conf 가 ‘West’와 같으면 ‘West_Player’
- conf가 ‘West’와 같지 않으면 ‘Other’
다음 코드는 이를 수행하는 방법을 보여줍니다.
#create new column called 'class' df$class <- ifelse(df$conf == ' West ', ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 <NA> 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
conf 열의 해당 값이 NA와 같기 때문에 행 2의 클래스 값은 NA와 같습니다.
이를 방지하려면 다음과 같이 !is.na() 함수를 사용할 수 있습니다.
#create new column called 'class' df$class <- ifelse(df$conf == ' West ' & !is. na (df$conf), ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 Other 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
이제 2행의 Class 값은 NA가 아닌 “Other”와 같습니다.
!is.na() 함수를 사용하여 새 클래스 열의 값이 ‘West_Player’가 되려면 conf 열의 값이 ‘West’ 와 같고 NA와 같지 않아야 함을 지정했습니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
R에서 중첩된 If Else 문을 작성하는 방법
R에서 사례 설명을 작성하는 방법
R의 데이터 프레임에 여러 열을 추가하는 방법