根据你的描述,你希望将三维数据(Njai_k)在第三个维度上进行汇总。但是你使用egen的rowtotal命令实际上是在行方向上做求和操作,并不适合这里的数据结构处理。正确的方法是先确保变量名与循环中的索引对应,然后在一个嵌套循环中直接对k维度上的变量值进行加总。
以下是一个可能更有效的Stata代码示例:
```stata
* 假设你的数据集已经在内存中
forvalues i=1/6 {
forvalues j=1/20 {
gen N`j'a`i' = 0 // 初始化新变量为0,确保没有遗留值
forvalues k=1/16 {
replace N`j'a`i' = N`j'a`i' + N`j'a`i'_`k'
}
}
}
```
在这段代码中:
1. 首先初始化一个新变量Njai为0。
2. 然后使用内层循环对每个Njai_k的值加到对应的Njai上。
但是,这段代码将涉及大量重复的replace操作,可能不是最高效的。更高效的方法是直接使用egen命令在数据准备妥当的情况下进行汇总:
```stata
* 假设你的变量名形式为 N1a1_1, N1a1_2...N6a20_16
reshape long Njai_k, i(jai) j(k)
by jai, sort: egen Njai = sum(Njai_k), by(jai)
reshape wide Njai
```
这里的逻辑是:
1. 使用`reshape long`将数据从宽表格式转换为长表格式,把k维度的数据拉平成一行。
2. 使用egen命令对每个观测值的Njai_k变量进行汇总求和。
3. 再使用`reshape wide`恢复到原始的宽表格式。
注意:在实际操作中,你需要确保变量命名符合上述模式(例如,变量名中包含i、j和k),或者修改代码以适应你的数据结构。如果变量名不符合预期的命名方式,你可能需要首先进行一些预处理来重命名或重组这些变量。
希望这能帮助到你!如果有更具体的数据结构或者其他需求,请详细说明。
此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用