【问题标题】:R tidyverse equivalent to Stata replace if missingR tidyverse 相当于 Stata 替换如果丢失
【发布时间】:2020-07-02 13:38:36
【问题描述】:

我正在尝试找到与 Stata 的 replace b = a if missing(b) 等效的 R/tidyverse。

假设我有这些数据:

library(tidyverse)
data <- data.frame(a=c(1:8), b= c(1:5, NA, NA, NA))

我正在尝试用a 中的值替换b 中的缺失值。我试试这个:

data %<>% mutate(b = replace_na(b, a))

但是得到一个错误。我可以在tidyverse 做什么来解决这个问题?

【问题讨论】:

    标签: r replace tidyverse stata


    【解决方案1】:

    您可以在mutate 中简单地使用ifelse

    data %>% 
      mutate(b = ifelse(is.na(b), a, b))
    #>   a b
    #> 1 1 1
    #> 2 2 2
    #> 3 3 3
    #> 4 4 4
    #> 5 5 5
    #> 6 6 6
    #> 7 7 7
    #> 8 8 8
    

    reprex package (v0.3.0) 于 2020 年 3 月 21 日创建

    【讨论】:

      【解决方案2】:

      你的方式我会使用coalesce from dplyr

      data %<>% mutate(b = coalesce(b, a))
      

      输出:

      data
      
        a b
      1 1 1
      2 2 2
      3 3 3
      4 4 4
      5 5 5
      6 6 6
      7 7 7
      8 8 8
      

      【讨论】:

        【解决方案3】:

        data.table 中,一个选项是fcoalesce

        library(data.table)
        setDT(data)[, b  := fcoalesce(b, a)]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多