我有一个数据集,显示公司 i 是否使用公司 j 的输入来生产某些商品。有两个变量:公司和供应商。这两个变量都是公司的唯一标识符。这是一个例子:
clear
input float(firm supplier)
1 2
2 3
4 5
end
是否有一种在Stata中生成输入输出矩阵的有效方法?更具体地说,我需要一个方阵,如果公司 i (行)由公司 j (列)提供,则在位置(i,j)显示1,并且0除此以外。对于上面的示例,该表应如下所示,其中行和列是公司ID,从1到5:
0 1 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 1
0 0 0 0 0
答案 0 :(得分:1)
这是一个非常天真的算法,但它的工作原理。
clear
input float(firm supplier)
1 2
2 3
4 5
end
mat J = J(5,5,0)
forval obs = 1/`=_N' {
local i = firm[`obs']
local j = supplier[`obs']
matrix J[`i', `j'] = 1
}
mat li J
J[5,5]
c1 c2 c3 c4 c5
r1 0 1 0 0 0
r2 0 0 1 0 0
r3 0 0 0 0 0
r4 0 0 0 0 1
r5 0 0 0 0 0