使用正则表达式将特定数字设置为NA?

时间:2018-09-26 10:20:07

标签: r dplyr gsub stringr

df的示例:

   LASSO_deviance LASSO_AUC
68          0.999     0.999
2           1.000     1.000
39          1.000     1.005
7            1.02       1.2

我想按优先顺序将包含1.000的单元格设置为NA0

我尝试过类似的操作:df %>% mutate_at(vars(LASSO_deviance, LASSO_AUC), funs(gsub(pattern = "1{1}[^.{1,}]", 0, x = .))),但是没有运气。

1 个答案:

答案 0 :(得分:0)

tt <- "LASSO_deviance LASSO_AUC
68          0.999     0.999
2           1.000     1.000
39          1.000     1.005
7            1.02       1.2"

dat <- read.table(text = tt, header = T)

无需正则表达式,因为您只需查找数据等于1.000的位置

dat[dat == 1.000] <- NA # or dat[dat == 1.000] <- 0
dat

# LASSO_deviance LASSO_AUC
# 68          0.999     0.999
# 2              NA        NA
# 39             NA     1.005
# 7           1.020     1.200