【发布时间】:2021-11-19 03:53:57
【问题描述】:
有 A、B 和 C 三个公司。它们的费率存储在向量中。
A <- c(19, 19, 19, 20, 12)
B <- c(19, 19, 20, 20, 20, 20, 19, 19, 19, 11)
C <- c(13, 13)
在此示例中,有 17 个费率,但只有 5 个唯一费率。 每个费率对应于 12 个月内的月费,这在各公司之间是相同的。
> str(fees)
List of 5
$ 19: num [1:12] 8.5 24.8 40.9 56.6 72.1 ...
$ 20: num [1:12] 8.9 26.1 42.9 59.4 75.7 ...
$ 12: num [1:12] 5.5 16.1 26.6 37 47.2 57.4 67.4 77.3 87.1 96.8 ...
$ 11: num [1:12] 4.8 13.9 23 31.9 40.8 49.6 58.3 66.9 75.5 83.9 ...
$ 13: num [1:12] 5.9 17.4 28.6 39.8 50.8 61.7 72.4 83.1 93.6 104 ...
目标是为每家公司建立费用矩阵。所以对于 A,费用矩阵为:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] 8.5 24.8 40.9 56.6 72.1 87.4 102.4 117.1 131.6 145.9 159.9 173.1
[2,] 8.5 24.8 40.9 56.6 72.1 87.4 102.4 117.1 131.6 145.9 159.9 173.1
[3,] 8.5 24.8 40.9 56.6 72.1 87.4 102.4 117.1 131.6 145.9 159.9 173.1
[4,] 8.9 26.1 42.9 59.4 75.7 91.6 107.3 122.7 137.9 152.7 167.3 181.3
[5,] 5.5 16.1 26.6 37.0 47.2 57.4 67.4 77.3 87.1 96.8 106.4 114.6
我的猜测是构建这些矩阵的最佳方法是使用查找表,但我不确定如何做到这一点。
R 脚本
A <- c(19, 19, 19, 20, 12)
B <- c(19, 19, 20, 20, 20, 20, 19, 19, 19, 11)
C <- c(13, 13)
all_comp <- c(A, B, C)
unique_comp <- unique(all_comp)
# Only 5 unique rates
# 19 20 12 11 13
fees <- list('19' = c(8.5, 24.8, 40.9, 56.6, 72.1, 87.4, 102.4, 117.1, 131.6, 145.9, 159.9, 173.1),
'20' = c(8.9, 26.1, 42.9, 59.4, 75.7, 91.6, 107.3, 122.7, 137.9, 152.7, 167.3, 181.3),
'12' = c(5.5, 16.1, 26.6, 37.0, 47.2, 57.4, 67.4, 77.3, 87.1, 96.8, 106.4, 114.6),
'11' = c(4.8, 13.9, 23.0, 31.9, 40.8, 49.6, 58.3, 66.9, 75.5, 83.9, 92.3, 99.3),
'13' = c(5.9, 17.4, 28.6, 39.8, 50.8, 61.7, 72.4, 83.1, 93.6, 104.0, 114.2, 123.1))
# Desired result
A_m <- matrix(c(rep(fees[['19']], 3), fees[['20']], fees[['12']]), 5, 12, byrow = TRUE)
【问题讨论】:
标签: r lookup-tables