我已经以dataframe
的形式获得了这个系数表:
coefficient_table <- data.frame("less_than_1" = c( 1, 0.5, 0.1, 0.025, 0.010, 0.005, 0.001),
"1-5" = c(0.500, 1.000, 0.200, 0.050, 0.020, 0.010, 0.002),
"5-20" = c(0.10, 0.20, 1.00, 0.25, 0.10, 0.05, 0.01),
"20-50" = c(0.025, 0.050, 0.250, 1.000, 0.400, 0.200, 0.040),
"50-100" = c(0.010, 0.020, 0.10, 0.400, 1.00, 0.500, 0.100),
"100-500" = c(0.005, 0.010, 0.050, 0.200, 0.500, 1.000, 0.200),
"more_than_500" = c(0.001, 0.002, 0.010, 0.040, 0.100, 0.200, 1.000))
我想将其应用于具有7个维度的矩阵,该矩阵的变量与我的系数dataframe
相同。现在是这样:
A <- data.frame("less_than_1" = c(0,0,1,0), "1-5" = c(1,0,0,0), "5-20" = c(0,0,0,0),
"20-50" = c(0,1,0,1), "50-100" = c(0,0,0,0), "100-500" = c(0,0,0,0),
"more_than_500" = c(0,0,0,0))
A <- as.matrix(A)
less_than_1 1-5 5-20 20-50 50-100 100-500 more_than_500
1 0 1 0 0 0 0 0
2 0 0 0 1 0 0 0
3 1 0 0 0 0 0 0
4 0 0 0 1 0 0 0
但是,我想使用我的系数矩阵根据我用来创建系数的公式对矩阵的元素进行加权,即:min(BudgetRange1,BudgetRange2)/ max(BudgetRange1,BudgetRange2)。
例如,第一行的预算为“ 1-5”,因此各列应采用值1。其他列应基于系数矩阵的同一列“ 1-5”采用其各自值( A)。
table_z
less_than_1 1-5 5-20 20-50 50-100 100-500 more_than_500
1 0.5 1 0.2 0.05 0.02 0.01 0.002
2 0.025 0.05 0.25 1 0.4 0.2 0.04
3 1 0.5 0.1 0.025 0.01 0.005 0.001
4 0.025 0.05 0.25 1 0.4 0.2 0.04
有人知道吗?感谢到目前为止的阅读
答案 0 :(得分:1)
假设refname_match()
和find_ref_by_name_abbrev()
的列(即'less_than_1','1-5','5-20'...)的排列顺序相同,则可以使用矩阵乘法:
coefficient_table