Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过By函数的加权平均值_R_Weighted Average - Fatal编程技术网

R 通过By函数的加权平均值

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

我正在努力调整我写的一个函数,它让我头疼,所以我想把它贴在这里

在函数中,我使用了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 = 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一百万,工作完美。。我不知道,但从现在起我会记住的。。