如何引用多个dataframe列来计算R中新的加权平均值列

如何引用多个dataframe列来计算R中新的加权平均值列,r,dataframe,weighted,weighted-average,R,Dataframe,Weighted,Weighted Average,我目前正在通过手动引用每个列名来计算数据帧的加权平均列。有没有办法通过增加数组集来缩短代码 如: df[,c(A,B,c)]和df[,c(PerA,PerB,PerC)]获得加权平均值,就像Excel中的SUMPRODUCT一样?特别是如果我有多个输入列来计算加权平均列 df$WtAvg = df$A*dfPerA + df$B*df$PerB + df$C*df$PerC 在不转换数据帧的情况下,假设数据帧的前半部分是大小,后半部分是重量,您可以使用加权。在apply函数中使用mean函数:

我目前正在通过手动引用每个列名来计算数据帧的加权平均列。有没有办法通过增加数组集来缩短代码 如:
df[,c(A,B,c)]
df[,c(PerA,PerB,PerC)]
获得加权平均值,就像Excel中的SUMPRODUCT一样?特别是如果我有多个输入列来计算加权平均列

df$WtAvg = df$A*dfPerA + df$B*df$PerB + df$C*df$PerC

在不转换数据帧的情况下,假设数据帧的前半部分是大小,后半部分是重量,您可以使用
加权。在
apply
函数中使用mean
函数:

df$WtAvg=apply(df,1,函数(x){加权平均值(x[1:(ncol(df)/2)],
x[(ncol(df)/2+1:ncol(df)])}
您将获得以下输出:

>df
A B C PerA PerB PerC WtAvg
1 1 2 3  0.1  0.2  0.7   2.6
2 4 5 6  0.5  0.3  0.2   4.7
3 7 8 9  0.6  0.1  0.3   7.7