我有一个包含多个因子列的数据框df,比如A列,其中因子为a,b,c,列B的因子为m,f等等。
这些列中的每一列都有NA
。如何根据他们的情况用a,b,c和m,f填写NA 专栏中的分布(例如,如果我有50%的男性和50% 女性(为简单起见)我将填写我的NA 50%为男性,50%为女性?
如果我有大约550个数据观察值和41个,这是一个很好的技术 列?
提前致谢!
答案 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,你不能简单地增加你的数据。
可能对您的数据集有更多了解可以帮助我们为您提供更精确的帮助。