【问题标题】:Using `dplyr::na_if` with a probability to create missing data?使用 `dplyr::na_if` 有可能创建缺失数据?
【发布时间】:2020-05-05 19:20:44
【问题描述】:

我对模拟可能丢失的数据感兴趣。我如何使用dplyr::na_if 来做到这一点?

直觉上我想做这样的事情:

mtcars %>% 
  mutate(mpg = na_if(mpg, rbinom(n = n(),
                                 1, 
                                 prob = .5) == 1))

但我认为这是错误的,因为na_if 真的是为了匹配xy。如何使用na_if 来创建缺失概率?

(编辑:另外,如果tidyverse 中有更好的创建缺失数据的功能,请在 cmets 中告诉我)

【问题讨论】:

    标签: r dplyr na missing-data


    【解决方案1】:

    稍微修改您的代码:

    mtcars %>%
     mutate(mpg = if_else(rbinom(n(), 1, prob = 0.5) == 1, NA_real_, mpg))
    
        mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
    4    NA   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
    6    NA   6 225.0 105 2.76 3.460 20.22  1  0    3    1
    7  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
    8  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
    9  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
    10   NA   6 167.6 123 3.92 3.440 18.30  1  0    4    4
    

    【讨论】:

      【解决方案2】:

      这里不需要na_if,只需使用if_elserbinom 也太过分了,runif 工作正常。

      mtcars %>% 
        mutate(mpg = if_else(runif(n = n()) > 0.5, NA_real_, mpg))
      

      【讨论】:

      • 感谢您的回答。为什么runif 优于rbinom
      • 对我来说似乎更简单一些。
      猜你喜欢
      • 1970-01-01
      • 2020-12-28
      • 2021-09-03
      • 2021-12-18
      • 2023-03-24
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多