如何引用多个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