【问题标题】:How to change NA values into specific values based on another variable?如何根据另一个变量将 NA 值更改为特定值?
【发布时间】:2021-12-08 10:59:26
【问题描述】:

我的数据集如下所示:

ID      QA    QB     QC   QD   QE
TO_12    1    2      NA    3    2
TO_13    1    2      NA    3    2
TO_14    1    2      NA    3    2
BO_15    1    2      2     NA   NA
BO_16    1    2      2     NA   NA
BO_17    1    2      2     NA   NA

我想删除前三列之后具有NA 值的所有行(例如,以'BO' 开头的行,并希望将QC 中的NA 值替换为2,使其看起来像这个:

ID      QA    QB     QC   QD  QE
TO_12    1    2      2    3    2
TO_13    1    2      2    3    2
TO_14    1    2      2    3    2

我非常感谢这里的一些帮助。

【问题讨论】:

    标签: dplyr tidyverse


    【解决方案1】:

    您可以将mutateis_else 一起使用来替换QC 列中的NA 值。然后您可以使用drop_na 删除带有NA 的行:

    library(tidyverse)
    
    df <- tribble(
          ~ID, ~QA,  ~QB,   ~QC, ~QD, ~QE,
      "TO_12",   1,    2,    NA,   3,   2,
      "TO_13",   1,    2,    NA,   3,   2,
      "TO_14",   1,    2,    NA,   3,   2,
      "BO_15",   1,    2,     2,  NA,  NA,
      "BO_16",   1,    2,     2,  NA,  NA,
      "BO_17",   1,    2,     2,  NA,  NA
    )
    
    df %>% 
      mutate(QC = if_else(is.na(QC), 2, QC)) %>%  # replaces NAs in QC with 2
      drop_na(QD:QE) # drops every row where NA is in cols QD to QE
    

    那么输出是:

    # A tibble: 3 × 6
      ID       QA    QB    QC    QD    QE
      <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
    1 TO_12     1     2     2     3     2
    2 TO_13     1     2     2     3     2
    3 TO_14     1     2     2     3     2
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 2020-02-18
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多