根据因子分布的值填充NA值(对于因子值列)?

时间:2017-09-18 08:20:02

标签: r machine-learning

我有一个包含多个因子列的数据框df,比如A列,其中因子为a,b,c,列B的因子为m,f等等。

这些列中的每一列都有NA

  1. 如何根据他们的情况用a,b,c和m,f填写NA 专栏中的分布(例如,如果我有50%的男性和50% 女性(为简单起见)我将填写我的NA 50%为男性,50%为女性?

  2. 如果我有大约550个数据观察值和41个,这是一个很好的技术 列?

    • 下一步将重新取样以使数据集更大并在数据集上应用ML - 请告诉我哪个函数会将此数据集放大为10000个观察值或更多?
  3. 提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码(请参阅下面的几条评论)(我创建了一个小数据框,为您提供具体示例)

A_ <- c(rep("a", 10), rep("b", 60), rep("c", 30), rep(NA, 200))
A <- data.frame(A_)
names(A) <- c("A")

b <- sample(c("a","b","c"), size = 200, prob = c(10,60,30)/100,replace = TRUE)
A[is.na(A)] <- b

您可以查看

table(A)

现在你应该小心改变NA值。首先,我会检查你为什么有NA。也许有理由说明信息不存在。使用分布中的值更改NA,您会自动假设缺少的数据遵循相同的分布。真的是这样吗? 550个观察实际上并没有多少人谈论分配。也许你需要简单地忽略NA的记录?

关于第二个问题,您不能简单地从现有数据中生成新数据。在某些情况下(例如,参见图像,您可以倾斜它们,移动它们等等),您可以“扩充”您的数据集。将小数据设置为您描述的数据集我不会这样做。 这一切都取决于您拥有的数据类型。但我的第一印象是,在你的情况下,有41个因素和许多NA,你不能简单地增加你的数据。

可能对您的数据集有更多了解可以帮助我们为您提供更精确的帮助。