【发布时间】:2021-09-13 07:50:15
【问题描述】:
我在 Stata 中使用这种类型的数据集:
| Year | Country | Investment | Value |
|---|---|---|---|
| 2000 | US | Bonds Total | 8% |
| 2000 | US | Bonds Private | 50% |
| 2000 | US | Equity Total | 10% |
| 2000 | US | Bonds Public | 50% |
| 2000 | US | Equity listed | 30% |
| 2000 | US | Equity Unlisted | 70% |
| 2000 | FR | Bonds Total | 5% |
| 2000 | FR | Bonds Private | 40% |
| 2000 | FR | Bonds Public | 60% |
| 2001 | US | Bonds Private | 70% |
我的问题是“私人债券”和“公共债券”是“总债券”的子类别。对于我的分析,我需要将这些数据与它们各自的类别放在同一行。
因此,我正在努力实现这一目标:
| Year | Country | Bonds Total | Bonds Private | Bonds Public | Equity Total | Equity Listed | Equity Unlisted | Real Estate | etc.. |
|---|---|---|---|---|---|---|---|---|---|
| 2000 | US | 8% | 50% | 50% | 10% | 30% | 70% | 5% | ... |
| 2000 | FR | 5% | 60% | 40% | 12% | 10% | 90% | 8% | ... |
| 2000 | DE | 6% | 40% | 60% | 15% | 10% | 90% | 10% | ... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2019 | CA | 5% | 60% | 40% | 10% | 30% | 70% | 10% | ... |
我已经尝试通过使用函数reshape 来实现这一点,但我无法获得相同的结果。这是我尝试过的:
by Year Country, sort: gen newid = _n
reshape wide investment, i(year) j(newid)
我收到以下错误消息:
values of variable newid not unique within year
【问题讨论】:
-
请研究 Stata 标签 wiki 并使用
dataex将数据示例显示为代码。或者直接看help dataex我们不能评论你没有显示的代码(尽管我怀疑你在这里不需要任何循环)。 -
查看 Stata 中的“reshape”命令。您正在尝试将“长”数据转换为“宽”数据。
-
大家好,谢谢你们的cmets!确实,看起来答案是“重塑”,但是我无法达到我想要的结果(请参阅更新的问题)。
-
错误信息提供信息。您的观察结果按国家和年份确定。您的代码暗示您拥有
year和Year,所以请注意
标签: loops stata stata-macros