R 将表转换为相互依赖/依赖矩阵

R 将表转换为相互依赖/依赖矩阵,r,excel,statistics,R,Excel,Statistics,你好,我希望你做得很好:) 我的原始数据格式如下所示。abc公司是技术公司 //T1 T2 T3 T4 a 1 1 0 1 b 1 0 1 0 c 1 1 0 1 d 0 1 1 1 我希望有一个相互依赖矩阵,如下所示: // T1 T2 T3 T4 T1 0 2. 1. 2 T2 2. 0. 1. 3 T3 1 1 0 1 T4 2 3 1. 0 基本上,我想计算有多少公司提供了多少相同的技术对(T1-T2或T1-T4),这代表了矩阵中的价值

你好,我希望你做得很好:)

我的原始数据格式如下所示。abc公司是技术公司


   //T1 T2 T3 T4
   a 1 1 0 1
   b 1 0 1 0
   c 1 1 0 1
   d 0 1 1 1
我希望有一个相互依赖矩阵,如下所示:


// T1 T2 T3 T4
T1 0  2. 1. 2
T2 2. 0. 1. 3
T3 1  1  0  1
T4 2  3  1. 0 
基本上,我想计算有多少公司提供了多少相同的技术对(T1-T2或T1-T4),这代表了矩阵中的价值

示例:3家公司(a、c、d)同时提供技术t2和t4


您能告诉我如何在excel或R:)中执行此操作吗?

这里有一种在R中执行此操作的方法-

count_1s <- function(x, y) sum(df[[x]] == 1 & df[[y]] == 1)
n <- 1:nrow(df)
res <- outer(n, n, Vectorize(count_1s))
diag(res) <- 0
dimnames(res) <- list(colnames(df), colnames(df))
res

#   T1 T2 T3 T4
#T1  0  2  1  2
#T2  2  0  1  3
#T3  1  1  0  1
#T4  2  3  1  0
计数\u 1s
数据T3 1 0 1
#>T4 2 3 1 0

由Excel中的(v2.0.0)

于2021-06-10创建,此公式向下和横向复制:

=(COUNTIFS(INDEX($B$2:$E$5,0,COLUMN(A1)),1,INDEX($B$2:$E$5,0,ROW(A1)),1)*(ROW(A1)<>COLUMN(A1)))
=(COUNTIFS(索引($B$2:$E$5,0,列(A1)),1,索引($B$2:$E$5,0,行(A1)),1)*(行(A1)列(A1)))

=(COUNTIFS(INDEX($B$2:$E$5,0,COLUMN(A1)),1,INDEX($B$2:$E$5,0,ROW(A1)),1)*(ROW(A1)<>COLUMN(A1)))