我正在尝试在我的 data.frame ( df
) 上创建一个带有 Weibull 密度值的新列。
考虑到这个df中的组,我需要为分位数向量(w)分配密度。
子集由变量“plot”分隔。
每个图都有特定的 Weibull 参数,密度应该来自这些参数。
参数存储在df_2
.
可重现的例子:
set.seed(25)
w = rweibull(1200,10,28)
plot = data.frame(c(rep.int(1,300),rep.int(2,300),rep.int(3,300),rep.int(4,300)))
names(plot)[1] = c("plot")
df = cbind(plot,w)
df_2=data.frame(cbind(c(1,2,3,4),c(28,27,26,25),c(9,9.5,8,7)))
names(df_2)[1:3] = c("plot","scale","shape")
我试图从 hadley's answer here改编代码,但没有成功。
library(plyr)
weibull_density <- ddply(df, "plot", function(x) {
data.frame(
density = dweibull(df$w, scale=df_2$scale, shape=df_2$shape)
)
})
nrow(weibull_density)
[1] 4800
它返回一个包含 4800 行的 data.frame(我期待 1200 行)。
我还查看了?ddply
帮助页面中提供的示例,但无法弄清楚如何使其适应这种情况。