2017-12-28 23 views
1
Age <- c(90,56,51,'NULL',67,'NULL',51) 
Sex <- c('Male','Female','NULL','male','NULL','Female','Male') 
Tenure <- c(2,'NULL',3,4,3,3,4) 
df <- data.frame(Age, Sex, Tenure) 

위의 예에서 문자/문자열 formate로 'NULL'값이 있습니다. 'NULL'값 대신 NA를 대신 사용하려고합니다. 나는 하나의 열에 대해 df$age[which(df$Age=='NULL)]<-NA'으로 그것을 할 수있었습니다. 그러나 나는 모든 열에 이것을 쓰고 싶지 않습니다.DataFrame의 모든 열에 대해 값을 찾아 값 바꾸기

'NULL'의 값이 모두 df이되도록 모든 열에 유사한 논리를 적용하는 방법은 NAs으로 변환됩니까? 나는 apply 또는 사용자 정의 함수 또는 for 루프를 수행 할 것이라고 추측합니다.

+0

[이 답변] (https://stackoverflow.com/a/29445422/1270695)에 설명되어 있고 [여기] (https://github.com/mrdwab/)에서 사용할 수있는 'makemeNA' 기능을 확인하십시오. SOfun). 그런 다음'makemeNA (df, "NULL")'을 할 수 있습니다. – A5C1D2H2I1M1N2O1R2T1

+1

중복 가능성 : https://stackoverflow.com/questions/3357743/replacing-character-values-with-na-in-a-data-frame – user20650

답변

0

dplyr ~ replace 모든 열에서 'NULL' 값을 사용하고 type.convert으로 열 유형을 변환 할 수 있습니다. 현재, 모든 열이 factor 클래스입니다 ('나이/임기가'되어야한다고 가정 numeric/integer 클래스)

library(dplyr) 
res <- df %>% 
     mutate_all(funs(type.convert(as.character(replace(., .=='NULL', NA))))) 
str(res) 
#'data.frame': 7 obs. of 3 variables: 
#$ Age : int 90 56 51 NA 67 NA 51 
#$ Sex : Factor w/ 3 levels "Female","male",..: 3 1 NA 2 NA 1 3 
#$ Tenure: int 2 NA 3 4 3 3 4 
+0

응답 해 주셔서 감사합니다. 이 논리를 큰 데이터 프레임에 적용하려고합니다.이 논리 프레임에는 날짜 시간 클래스로 열도 포함되어 있으며이 열에는 'NULL'값이 거의 없습니다. 그러나,'''''mutate_impl (.data, dots) 오류 : 평가 오류 : 문자열이 표준 모호하지 않은 형식으로되어 있지 않다는 오류가 발생했습니다.'' –

+0

@AshishSahu 데이터 구조가 유사하다고 가정합니다 당신이 보여준 예에 따르면, 그것은 효과가있을 것입니다. 'str (df)'를'str (yourlargerdata)'로 검사하여 클래스에 차이가 있는지 확인하십시오. – akrun

+1

나는 그것을 이해했다. 내 생각에,'''str (myDataFrame)''에는 NULL 값을 포함하는 Date Time 클래스와 같은 몇 개의 열이있었습니다. 그래서''mutate_all''' 또는''replace''' 함수를 수행하는 동안 그것은 Evaluation Error를 던지고있었습니다. 이를 극복하기 위해 나는 모든 칼럼을 formate formate로 바꾸었고 나중에 imputation을 수행했다. –

5

기본 R 솔루션

replace(df, df =="NULL", NA) 
3
하나에도 한 번에 대체하는 데 사용할 수있는

:

df[df=="NULL"] <- NA