유효한 항목이 아닌지 확인한 후 기존 열에서 열을 파생해야합니다. INPUT열에 유효한 값이 있는지 확인하는 방법은 무엇입니까?
ID
2
4
6
34
출력
ID ID_ENTRY
2 PRESENT
NOT PRESENT
4 PRESENT
6 PRESENT
NOT PRESENT
NOT PRESENT
34 PRESENT
유효한 항목이 아닌지 확인한 후 기존 열에서 열을 파생해야합니다. INPUT열에 유효한 값이 있는지 확인하는 방법은 무엇입니까?
ID
2
4
6
34
출력
ID ID_ENTRY
2 PRESENT
NOT PRESENT
4 PRESENT
6 PRESENT
NOT PRESENT
NOT PRESENT
34 PRESENT
여기에 기본 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")
일반적으로이 is.na
으로 해결 될 수있다 :
dat[,"ID_ENTRY"] <- ifelse(is.na(dat[,"ID"]), "NOT PRESENT", "PRESENT")
하지만 경우에 따라서는 해당 컬럼의 유형을 확인하고이 경우 다른 방법을 사용하는 것이 필요하다. 예를 들어, 그것을 character
열 경우, 접근 방식은
dat[, "ID_ENTRY"] <- ifelse(dat[,"ID"]=="", "NOT PRESENT", "PRESENT")
고마워요. – NgBrandon
사용이 sapply
를 사용할 수있을 것이다.
vec1 <- c("a", "b", "c", "")
vec2 <- sapply(vec1, function(x){ifelse(x == "", "NOT PRESENT", "PRESENT")})
vec2
## "PRESENT" "PRESENT" "PRESENT" "NOT PRESENT"
해당 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
>
입니다 그 빈 텍스트 문자열이나 수치입니다 가정? R에서는 숫자 벡터 인 경우 NA를 얻습니다. 그럼 당신은'ifelse (! is.na (ID), "PRESENT", "PRESENT")' –
을 끝내야 했습니까? –
gsub ("", '없음', ID) – NgBrandon