你可以使用下面的代码(请参见下面的一对夫妇的评论)(我创建了一个小的数据帧给你一个具体的例子)
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,你不能简单地增加你的数据。
可能知道更多关于您的数据集可以帮助我们给您更精确的帮助。
我怀疑这是个好主意,但你可以使用'sample'的参数'prob'。 –
@RuiBarradas为什么不呢?任何建议? – Steves
由于“NA”值是数据的一部分,“R”中有许多方法可以根据具体情况排除它们。例如,在一些函数中,你可以设置'na.rm = TRUE'或'na.omit'和'na.exclude'。但保留原始数据。 –