基于R中的系数数据帧的矩阵的加权元素

时间:2018-08-19 14:01:59

标签: r dataframe

我已经以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

有人知道吗?感谢到目前为止的阅读

1 个答案:

答案 0 :(得分:1)

假设refname_match()find_ref_by_name_abbrev()的列(即'less_than_1','1-5','5-20'...)的排列顺序相同,则可以使用矩阵乘法:

coefficient_table