2017-10-16 1 views
0

유효한 항목이 아닌지 확인한 후 기존 열에서 열을 파생해야합니다. INPUT열에 유효한 값이 있는지 확인하는 방법은 무엇입니까?

ID 
    2 

    4 
    6 


    34 

출력

ID ID_ENTRY 
2 PRESENT 
    NOT PRESENT 
4 PRESENT 
6 PRESENT 
    NOT PRESENT 
    NOT PRESENT 
34 PRESENT 
+1

입니다 그 빈 텍스트 문자열이나 수치입니다 가정? R에서는 숫자 벡터 인 경우 NA를 얻습니다. 그럼 당신은'ifelse (! is.na (ID), "PRESENT", "PRESENT")' –

+0

을 끝내야 했습니까? –

+0

gsub ("", '없음', ID) – NgBrandon

답변

3

여기에 기본 R 옵션을 사용하는 것입니다 ifelse :

df$ID_ENTRY <- ifelse(ID != "", "PRESENT", "NOT PRESENT") 

당신이 널, 빈 문자열을 가질 수, 또는 NA 우리는 다음 값이없는 경우 사용할 수 있습니다 :

df$ID_ENTRY <- ifelse(ID != "" & !is.na(ID) & !is.null(ID), 
         "PRESENT", "NOT PRESENT") 
1

일반적으로이 is.na으로 해결 될 수있다 :

dat[,"ID_ENTRY"] <- ifelse(is.na(dat[,"ID"]), "NOT PRESENT", "PRESENT") 

하지만 경우에 따라서는 해당 컬럼의 유형을 확인하고이 경우 다른 방법을 사용하는 것이 필요하다. 예를 들어, 그것을 character 열 경우, 접근 방식은

dat[, "ID_ENTRY"] <- ifelse(dat[,"ID"]=="", "NOT PRESENT", "PRESENT") 
+0

고마워요. – NgBrandon

0

사용이 sapply를 사용할 수있을 것이다.

vec1 <- c("a", "b", "c", "") 
vec2 <- sapply(vec1, function(x){ifelse(x == "", "NOT PRESENT", "PRESENT")}) 
vec2 
## "PRESENT"  "PRESENT"  "PRESENT" "NOT PRESENT" 
0

해당 ID가 factor

ss <- data.frame(ID = c(2,' ',4,6,' ',' ',34)) 

> ss$ID_ENTRY <- lapply(ss$ID,function(x){ifelse(is.na(as.numeric(as.character(x))),'NOTPRESENT','PRESENT')}) 
> ss 
    ID ID_ENTRY 
1 2 PRESENT 
2 NOTPRESENT 
3 4 PRESENT 
4 6 PRESENT 
5 NOTPRESENT 
6 NOTPRESENT 
7 34 PRESENT 
> 
관련 문제