【问题标题】:Stata reshape long to wideStata从长到宽重塑
【发布时间】: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!确实,看起来答案是“重塑”,但是我无法达到我想要的结果(请参阅更新的问题)。
  • 错误信息提供信息。您的观察结果按国家和年份确定。您的代码暗示您拥有yearYear,所以请注意

标签: loops stata stata-macros


【解决方案1】:

没有看到可重现的例子,我会尝试猜测:

reshape wide value, i(year country) j(investment) string

使用string 选项以允许将字符串观察(“债券总数”等)用作变量名称。

之后相应地重命名变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多