【问题标题】:Replace NAs in one variable with values from another variable将一个变量中的 NA 替换为另一个变量的值
【发布时间】:2013-08-06 04:44:48
【问题描述】:

如何将变量 VAR1 的“NAs”替换为第二个变量 VAR2 的值以在 R 中创建第三个变量 VAR3?数据如下所示:

 VAR1:    VAR2:
 1        NA
 3        NA
 NA       1 
 NA       3
 2        NA 
 NA       1

之后应该是这样的:

 VAR1:    VAR2:    VAR3:
 1        NA       1   
 3        NA       3
 NA       1        1
 NA       3        3
 2        NA       2
 NA       1        1  

【问题讨论】:

    标签: r replace


    【解决方案1】:

    一种方法是使用ifelse:

    DF <- transform(DF, VAR3 = ifelse(!is.na(VAR1), VAR1, VAR2))
    

    transform 用于避免一遍又一遍地输入DF$,但也许你会更喜欢:

    DF$VAR3 <- ifelse(!is.na(DF$VAR1), DF$VAR1, DF$VAR2)
    

    【讨论】:

    • 非常感谢您的解决方案!很有帮助!
    【解决方案2】:

    虽然我喜欢这种变换,但这是另一种方法:

    ##  dat <- read.table(text="VAR1    VAR2
    ##   1        NA
    ##   3        NA
    ##   NA       1 
    ##   NA       3
    ##   2        NA
    
    
    dat$VAR3 <- dat[, "VAR1"]
    dat[is.na(dat[, "VAR3"]), "VAR3"] <- dat[is.na(dat[, "VAR3"]), "VAR2"]
    dat
    ##   VAR1. VAR2. VAR3
    ## 1     1    NA    1
    ## 2     3    NA    3
    ## 3    NA     1    1
    ## 4    NA     3    3
    ## 5     2    NA    2
    ## 6    NA     1    1
    

    【讨论】:

      【解决方案3】:

      一种简单的方法是将pmaxna.rm = TRUE 一起使用:

      pmax(VAR1, VAR2, na.rm = TRUE)
      

      数据框dat的命令:

      dat <- transform(dat, VAR3 = pmax(VAR1, VAR2, na.rm = TRUE))
      

      【讨论】:

      • 非常巧妙地使用pmax+1
      【解决方案4】:
      library(dplyr)
      df %>% mutate(VAR3=coalesce(VAR1,VAR2))
      

      【讨论】:

      • 如果您能添加一些解释以使其成为高质量的答案,那就太好了
      猜你喜欢
      • 2019-02-05
      • 2021-02-22
      • 2020-03-24
      • 2019-09-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      相关资源
      最近更新 更多