代码之家  ›  专栏  ›  技术社区  ›  Pryore

if\ else真值默认为NA[重复]

  •  0
  • Pryore  · 技术社区  · 7 年前

    我正在尝试使用dplyr的if\u else语句在我的data\u框架中变异一个新列。但是,我指定给向量if TRUE的值默认为NA,而FALSE的值似乎有效。我不确定它是否与变量类型有关,但我真的很感谢您的帮助。

    我的数据

    data <- 
     data.frame(SP = c("A","B","C","D","E"),
                Sale = c("Y","Y",NA,"Y",NA),
                WWS = c(NA,NA,"Y",NA,"Y"))
    

    添加新列的现有代码

    data %>%
      mutate(RMV = if_else(
                   Sale == "Y" & WWS != "Y", "Keep","-"))
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   krads    7 年前

    data %>%
      mutate(RMV = (Sale == "Y" & !is.na(Sale)) & (WWS != "Y" | is.na(WWS)))
    
      SP Sale  WWS   RMV
    1  A    Y <NA>  TRUE
    2  B    Y <NA>  TRUE
    3  C <NA>    Y FALSE
    4  D    Y <NA>  TRUE
    5  E <NA>    Y FALSE
    

    您最初尝试的问题将在的帮助中解释 ?Comparison :

    缺失值(NA)和NaN值被认为是不可比的,即使它们本身,因此涉及它们的比较总是会导致NA。

    x < y
    x > y
    x <= y
    x >= y
    x == y
    x != y
    

    …其中一个(或两个!)上面的x或y是NA,它总是导致NA。