通过将具有相同名称后缀的变量相乘来创建变量

Create variables by multiplying variables that have the same name suffix

我有一个如下所示的 Stata 数据集:

stock8201 stock8202 stock8203 immigrantshare8201 immigrantshare8202 immigrantshare8203
123 24 21 0.0004696 0.0001165 0.0016181
123 24 21 0.0004696 0.0001165 0.0016181
123243 24 21 0.0004696 0.0001165 0.0016181

我想要一个命令,为我创建三个变量,将第一个 stock8201 乘以 immigrantshare8201,并对其他变量执行相同的操作。我最后想要的 table 看起来像这样:

Predi8201 Predi8202 Predi8203
0.0577608 0.002796 0.0339801
0.0577608 0.002796 0.0339801
57.8749128 0.002796 0.0339801

例如:Predi8201 等于 stock8201*immigrantshare8201

forval j = 1/3 { 
    gen Predi820`j' = stock820`j' * immigrantshare820`j' 
} 

对于更大的变量集,您可能需要类似

的东西
foreach v of var stock* { 
     local suffix : subinstr local v "stock" "" 
     gen Predi`suffix' = `v' * immigrantshare`suffix' 
} 

您的问题暗示您正在以广泛的布局保存不同月份(1982 年 1 月、1982 年 2 月...)的数据。在 Stata 中,大多数事情在长布局中更容易,通常需要 reshape long.