Bol*_*lio 0 r vector dataframe sumproduct
我有一个数据框df如下:
prod sd c1 c2 c3
1 NA NA 0.5 0.25 0.25
2 NA NA 0.5 0.50 0.00
3 NA NA 0.5 0.00 0.50
Run Code Online (Sandbox Code Playgroud)
和一个向量v = c(0.1, 0.2, 0.3)。
对于每一行,我想“求和”df$[,c(3:5)] * v并将结果放入df$prod,这样:
df$prod[1] <- (0.5 * 0.1) + (0.25 * 0.2) + (0.25 * 0.3)
df$prod[2] <- (0.5 * 0.1) + (0.5 * 0.2) + (0 * 0.3)
Run Code Online (Sandbox Code Playgroud)
我已经阅读了许多关于复制 Excels 的 sumproduct 函数的不同主题,并尝试了很多不同的东西,但我一直无法提出一个可行的解决方案。如果有帮助,很高兴详细说明无效的内容,但我怀疑我忽略了一些非常简单的内容。非常感谢任何帮助。
使用矩阵乘法:
df$prod <- as.matrix(df[3:5]) %*% v
Run Code Online (Sandbox Code Playgroud)
prod sd c1 c2 c3
1 0.175 NA 0.5 0.25 0.25
2 0.150 NA 0.5 0.50 0.00
3 0.200 NA 0.5 0.00 0.50
Run Code Online (Sandbox Code Playgroud)
可重现数据(请下次自行提供):
v <- c(0.1, 0.2, 0.3)
df <- read.csv(text =
"prod,sd,c1,c2,c3
NA,NA,0.5,0.25,0.25
NA,NA,0.5,0.50,0.00
NA,NA,0.5,0.00,0.50")
Run Code Online (Sandbox Code Playgroud)