R 通过By函数的加权平均值
我正在努力调整我写的一个函数,它让我头疼,所以我想把它贴在这里 在函数中,我使用了R的“by”函数,它将数据帧放在子集中,并在其上运行一个函数 现在我将函数扩展为包含weighted.mean(来自'descr'包),我得到一个错误,x和w的长度不相等 要显示的一些代码:R 通过By函数的加权平均值,r,weighted-average,R,Weighted Average,我正在努力调整我写的一个函数,它让我头疼,所以我想把它贴在这里 在函数中,我使用了R的“by”函数,它将数据帧放在子集中,并在其上运行一个函数 现在我将函数扩展为包含weighted.mean(来自'descr'包),我得到一个错误,x和w的长度不相等 要显示的一些代码: set.seed(100) d1 <- rnorm(300) d2 <- (floor(runif(100, min=1, max=4))) weight <- rnorm(300,mean = 1, sd
set.seed(100)
d1 <- rnorm(300)
d2 <- (floor(runif(100, min=1, max=4)))
weight <- rnorm(300,mean = 1, sd = 1)
df <- cbind.data.frame(d1,d2,weight)
df$d2 <- factor(df$d2,
levels = c(1,2,3,4),
labels = c("red", "blue", "green","orange"))
require('descr')
by(df$d1, df$d2, function(x) mean(x=x, na.rm=TRUE))
by(df$d1, df$d2, function(x) weighted.mean(x=x,w=df$weight na.rm=TRUE))
set.seed(100)
d1诀窍是使用整个data.frame作为输入除以标记
by(data = df, INDICES = df$d2, FUN = function(dfgroup) {
weighted.mean(x = dfgroup$d1, w = dfgroup$weight, na.rm=TRUE)
})
Tx一百万,工作完美。。我不知道,但从现在起我会记住的。。