我在R中有以下dataframe
名为(A)
A <- data.frame("budget_range" = c("less_than_1", "1-5", "5-20", "20-50", "50-100", "100-500", "more_than_500"),
"coefficient" = c(0.005, 0.01, 0.05, 0.2, 0.5, 1, 5))
Budget_range Coefficient
1_less_than_1 0.005
2_1-5 0.01
3_5-20 0.05
4_20-50 0.2
5_50-100 0.5
6_100-500 1
7_more_than_500 5
我现在想创建一个7x7的矩阵,其中矩阵的每个元素= min(BudgetRange1,BudgetRange2)/ max(BudgetRange1,BudgetRange2)。
例如,对于元素2,1或1,2(它们应该相同),数学将为0.005 / 0.01 = 0.5。
它应该给出这样的内容:
1 2 3 4 5 6 7
1 1 0.5 0.1 0.025 0.01 0.005 0.001
2 0.5 1 0.2 0.05 0.02 0.01 0.002
3 ...
4
5
6
7
任何想法怎么做?提前非常感谢!
答案 0 :(得分:2)
我们可以使用outer
来完成
outer(A$coefficient, A$coefficient, FUN = function(...) pmin(...)/pmax(...))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] 1.000 0.500 0.10 0.025 0.01 0.005 0.001
#[2,] 0.500 1.000 0.20 0.050 0.02 0.010 0.002
#[3,] 0.100 0.200 1.00 0.250 0.10 0.050 0.010
#[4,] 0.025 0.050 0.25 1.000 0.40 0.200 0.040
#[5,] 0.010 0.020 0.10 0.400 1.00 0.500 0.100
#[6,] 0.005 0.010 0.05 0.200 0.50 1.000 0.200
#[7,] 0.001 0.002 0.01 0.040 0.10 0.200 1.000