我需要在检查它是否有有效条目之后从现有列派生一个列。 INPUT
b
输出
ID
2
4
6
34
答案 0 :(得分:2)
此处的基本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 :(得分:1)
通常,这可以通过is.na
来解决:
dat[,"ID_ENTRY"] <- ifelse(is.na(dat[,"ID"]), "NOT PRESENT", "PRESENT")
但是,有时需要检查相关列的类型,并在这种情况下使用不同的方法。例如,如果它是character
列,则方法是
dat[, "ID_ENTRY"] <- ifelse(dat[,"ID"]=="", "NOT PRESENT", "PRESENT")
答案 2 :(得分:0)
使用可以使用sapply
。
vec1 <- c("a", "b", "c", "")
vec2 <- sapply(vec1, function(x){ifelse(x == "", "NOT PRESENT", "PRESENT")})
vec2
## "PRESENT" "PRESENT" "PRESENT" "NOT PRESENT"
答案 3 :(得分: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
>