gpt4 book ai didi

r - 将随机缺失值的精确比例添加到 data.frame

转载 作者:行者123 更新时间:2023-12-04 18:30:13 25 4
gpt4 key购买 nike

我想添加随机 NA到 R 中的 data.frame。到目前为止,我已经研究了这些问题:

R: Randomly insert NAs into dataframe proportionaly

How do I add random NA s into a data frame

add random missing values to a complete data frame (in R)

这里提供了许多解决方案,但我找不到符合这 5 个条件的解决方案:

  • 添加真正随机的 NA,而不是按行或按列添加相同的数量
  • 处理在 data.frame 中可能遇到的每一类变量(数字、字符、因子、逻辑、ts..),因此输出必须与输入 data.frame 或矩阵具有相同的格式。
  • 保证输出中 NA 的确切数量或比例 [注意](许多解决方案导致 NA 数量较少,因为有几个是在同一位置生成的)
  • 对于大数据集计算效率高。
  • 独立于输入中已经存在的 NA 添加 NA 的比例/数量。

  • 有人有想法吗?
    我已经尝试编写一个函数来执行此操作(在第一个链接的答案中),但它不符合第 3 和第 4 点。
    谢谢。

    [注意] 确切的比例,当然在 +/- 1NA 处四舍五入。

    最佳答案

    这是我在 library(imputeMulti) 上的论文中采用的方式目前正在 JSS 审查中。此插件NA是整个数据集的一个随机百分比并且可以很好地扩展,它不是 保修由于 n * p * pctNA %% 1 != 0 的情况下的确切数字.

    createNAs <- function (x, pctNA = 0.1) {
    n <- nrow(x)
    p <- ncol(x)
    NAloc <- rep(FALSE, n * p)
    NAloc[sample.int(n * p, floor(n * p * pctNA))] <- TRUE
    x[matrix(NAloc, nrow = n, ncol = p)] <- NA
    return(x)
    }

    显然,您应该使用随机种子来实现可重复性,这可以在函数调用之前指定。

    这是创建用于跨插补方法比较的基线数据集的一般策略。我相信这就是您想要的,尽管您的问题(如评论中所述)没有明确说明。

    编辑 :我确实假设 x已完成。所以,我不确定它将如何处理现有的缺失数据。如果需要,您当然可以修改代码,尽管这可能会使运行时间至少增加 O(n*p)

    关于r - 将随机缺失值的精确比例添加到 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513837/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com