我有两个数据库,df和cf.我希望将每个df中的每个值乘以cf中的每个系数,具体取决于表df中B和C的值。
例如 df中的第2行A = 20 B = 4且C = 2,因此正确的系数为0.3, 结果是20 * 0.3 = 6
在R!中有一种简单的方法可以做到这一点!
提前致谢!!
df
A B C
20 4 2
30 4 5
35 2 2
24 3 3
43 2 1
cf
C
B/C 1 2 3 4 5
1 0.2 0.3 0.5 0.6 0.7
2 0.1 0.5 0.3 0.3 0.4
3 0.9 0.1 0.6 0.6 0.8
4 0.7 0.3 0.7 0.4 0.6
答案 0 :(得分:1)
apply
的一个解决方案:
#iterate over df's rows
apply(df, 1, function(x) {
x[1] * cf[x[2], x[3]]
})
#[1] 6.0 18.0 17.5 14.4 4.3
答案 1 :(得分:1)
试试这个矢量化:
df[,1] * cf[as.matrix(df[,2:3])]
#[1] 6.0 18.0 17.5 14.4 4.3
答案 2 :(得分:0)
使用$details = new Details();
$details->setSubtotal($price)
->setTax(2.00);
$amount = new Amount();
$amount->setCurrency('USD')
->setTotal($total)
->setDetails($details);
和矢量化函数的解决方案:
dplyr
最终数据集包含df = read.table(text = "
A B C
20 4 2
30 4 5
35 2 2
24 3 3
43 2 1
", header=T, stringsAsFactors=F)
cf = read.table(text = "
0.2 0.3 0.5 0.6 0.7
0.1 0.5 0.3 0.3 0.4
0.9 0.1 0.6 0.6 0.8
0.7 0.3 0.7 0.4 0.6
")
library(dplyr)
# function to get the correct element of cf
# vectorised version
f = function(x,y) cf[x,y]
f = Vectorize(f)
df %>%
mutate(val = f(B,C),
result = val * A)
# A B C val result
# 1 20 4 2 0.3 6.0
# 2 30 4 5 0.6 18.0
# 3 35 2 2 0.5 17.5
# 4 24 3 3 0.6 14.4
# 5 43 2 1 0.1 4.3
和result
,以便检查每次使用val
中的哪个值。