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

根据R中包含NA的另一个因子替换数据帧中的值

  •  4
  • PaulHurleyuk  · 技术社区  · 16 年前

    下面是一个例子

    df<-structure(list(conc = c(101.769, 1.734, 62.944, 92.697, 25.091, 27.377, 24.343, 55.084, 0.335, 23.280), status = structure(c(NA, NA, NA, NA, NA, NA, 2L, NA, 1L, NA), .Label = c("<LLOQ", "NR"), class = "factor")), .Names = c("conc", "status"), row.names = c(NA, -10L), class = "data.frame")
    

    我想用标志列的某些值的字符串替换浓度列,或者将浓度值格式化为特定数量的有效数字。

    当我尝试这个的时候

    ifelse(df$status=="NR","NR",df$conc)
    

    我错过什么了吗?我也尝试过as.character(df$status),但不起作用。我的魔力一定越来越低了。。。。

    3 回复  |  直到 10 年前
        1
  •  5
  •   Matt Parker    16 年前

    使用 %in% 而不是 ==

    ifelse(df$status %in% "NR","NR", df$conc)

    data.frame(df, ph = ifelse(df$status=="NR","NR",df$conc), mp = ifelse(df$status %in% "NR","NR",df$conc))
    

    退房 ?match 更多信息-我不确定我能不能解释清楚。

        2
  •  3
  •   Marek    16 年前

    NA

    ifelse(df$status=="NR" | is.na(df$status),"NR",df$conc) # gives you NR for NA
    

    ifelse(df$status=="NR" & !is.na(df$status),"NR",df$conc) # gives you df$conc for NA
    
        3
  •  2
  •   Aniko    16 年前

    ifelse(is.na(df$status), df$conc, as.character(df$status))