我正嘗試在我的data.frame(df
)上創建一個具有Weibull密度值的新列。在數據集組內分配威布爾密度
我需要爲分位數(w)的向量考慮df中的組分配密度。
子集由變量「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")
我試着去適應從哈德利的答案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
它返回一個data.frame與4800行(我期待1200)。
我還看了?ddply
幫助頁面中提供的示例,但無法弄清楚如何使其適應這種情況。
當然還有更多的開銷..但這個例子很清楚的概念...嗯... –
這工作太!感謝這個答案(+1)。 –