如何检查列是否有有效值?

时间:2017-10-16 08:55:02

标签: r

我需要在检查它是否有有效条目之后从现有列派生一个列。 INPUT

b

输出

   ID
    2

    4
    6


    34

4 个答案:

答案 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
>