使用ddply模拟数据帧中的数据

时间:2014-09-21 02:09:02

标签: r

我有一些植物数据几乎与鸢尾花相同。数据集。我想使用正态分布模拟新数据。因此,对于虹膜数据集中的每个变量〜物种,我将从正态分布创建10个新的观测值。基本上它只是创建一个与旧结构相同结构的新数据框,但它将包含模拟数据。我觉得以下代码应该让我开始(我认为数据框的格式错误),但它不会运行。

ddply(iris, c("Species"), function(x) data.frame(rnorm(n=10, mean=mean(x), sd=sd(x))))

rnorm返回一个原子向量,所以ddply应该能够处理它。

1 个答案:

答案 0 :(得分:1)

ddply将按Species对行进行子集化,但您在函数中不执行任何操作来迭代子设置data.frame的列。你不能让norm()为你返回一个列表或data.frame;你需要协助塑造。 <怎么样

ddply(iris, c("Species"), function(x) {
    data.frame(lapply(x[,1:4], function(y) rnorm(10, mean(y), sd(y))))
})

这里我们计算每组中前4列的新值。