r语言 - 计算具有NA的多个列的加权平均值



我有一个像这样的数据帧:

ID  duration1   duration2   total_duration  quantity1   quantity2
1     5            2             7             3         1
2     NA           4             4             3         4
3     5            NA            5             2         NA

我想为每个主题做一个加权平均值,像这样:

df$weighted_mean<-  ((df$duration1*df$quantity1) + (df$duration2*df$quantity2) ) / (df$total_duration)

但是我有NA,这个命令不工作,它不是很好....

结果是:

ID  duration1   duration2   total_duration  quantity1   quantity2   weighted_mean
1     5            2             7             3         1          2.43
2     NA           4             4             3         4          4
3     5            NA            5             2         NA         2

提前感谢您的帮助

可以利用sumprodna.rm=参数。

transform(df, z=sum(prod(duration1, quantity1, na.rm=T), na.rm=T) + 
sum(prod(duration2, quantity2, na.rm=T), na.rm=T)/
na.omit(total_duration))
#   ID duration1 duration2 total_duration quantity1 quantity2        z
# 1  1         5         2              7         3         1 454.5714
# 2  2        NA         4              4         3         4 458.0000
# 3  3         5        NA              5         2        NA 456.4000

最新更新