【发布时间】:2019-07-21 07:31:50
【问题描述】:
我有一个数据框如下:
date Rank new_Weight c
2019-01-01 20 2 10
2019-01-01 30 5 10
2019-01-01 10 8 10
2019-02-02 3 10 60
2019-02-02 5 2 60
.... ... ....
我想根据排名和新权重计算加权平均值 我已经应用了以下代码:
by(df, df$date,subset) function(x){
x<-df$rank*df$new_weight/sum(df$new_weigth)
}
并创建一个新列。
我编写了以下函数,它运行良好。
df<- df %>% group_by(date) %>% mutate(w=weighted.mean(rank,new_weight))
但是我想知道为什么第一个功能不起作用。
【问题讨论】:
-
你不能只使用
weighted.mean()函数吗?with(df, weighted.mean(Rank, new_Weight)). -
你的意思是在函数中我使用 weigted.mean() 而不是我写的函数。
-
在你的函数中有参数
x,你还需要一个包含x的表达式。