【问题标题】:Insert random NAs in a vector in R as a Loop在 R 中的向量中插入随机 NA 作为循环
【发布时间】:2016-02-07 01:55:22
【问题描述】:

所以我有一个由值 0 和 1 组成的数据框。我想创建一个循环,随机抽取 38 个这些观察值并用 NA 替换它们。我成功地进行了一次迭代,其中原始向量观察被以下一行代码替换:

foo$V2[sample(seq(foo$V2), 38)] <- NA

但是,我想这样做 20 次,并将每次迭代编译为单个对象中的单独列。最终,我将有一个 20 列数据框,每个数据框有 191 个观察值,每个观察值有 38 个随机替换的 NA。在循环结束时,我希望将数据框写为文本文件。感谢您在正确方向上的任何帮助。

数据集:

https://drive.google.com/file/d/0BxfytpfgCdAcdEQ2LWFuVWVqMVU/view?usp=sharing

【问题讨论】:

  • 你能分享一个你的数据示例
  • 当然!编辑了现在提供给数据集的链接。

标签: r loops random sample na


【解决方案1】:

可能是这样的:

# Fake data
set.seed(1998)
foo = data.frame(V2=sample(0:1, 191, replace=TRUE))

# Create 20 samples where we replace 38 randomly chosen values with NA
n = 20 
samples = as.data.frame(replicate(n, {
  x = foo$V2
  x[sample(seq_along(x), 38)] = NA
  x
  }))

然后你可以用你想要的任何格式来写它。例如:

write.table(samples, "samples.txt")
write.csv(samples, "samples.csv", row.names=FALSE)

【讨论】:

  • 谢谢。下半场是我需要的。完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2017-06-10
相关资源
最近更新 更多