【问题标题】:How to Aggregate Relational Data in Stata?如何在Stata中聚合关系数据?
【发布时间】:2011-09-03 07:23:30
【问题描述】:

我无法解决以下 Stata 编程问题:

我有一张表格,列出了客户购买的所有汽车和制造:

Customer | Make | Price
-----------------------
      c1 |   m1 |     1
      c1 |   m1 |     2
      c1 |   m3 |     1
      c2 |   m2 |     2
      c3 |    . |     .

我想将其转换为一个表格,每个客户有一个观察/行,列出每个品牌支付的最高价格:

Customer | m1 | m2 | m3
-----------------------
      c1 |  2 |  0 |  1
      c2 |  0 |  1 |  0
      c3 |  0 |  0 |  0

我如何实现这一目标?我知道reshape wide,但这不起作用,因为c1 | m1 行加倍。此外,c3 的缺失值也会造成麻烦。

【问题讨论】:

    标签: aggregate stata


    【解决方案1】:

    根据您想做什么,我建议您采用不同的方法。例如,使用 -bysort- 您可以按客户查找每个品牌的最高价格。

    bysort Customer Make : egen maxPrice = max( Price )
    

    或者,您可以使用折叠来查找客户的最高价格并制作:

    collapse (max) Price, by( Customer Make )
    

    但是,如果您真的想要使用 -reshape- 发布的表格,您可以运行以下命令:

    collapse (max) Price, by( Customer Make )
    drop if Price == .
    reshape wide Price, i( Customer ) j( Make ) string
    renpfix Price 
    

    请注意,如果在 Price 列中遇到缺失数据,reshape 将失败。我在上面的代码中删除了这些观察结果,但您可以选择执行不同的操作,例如用您发布的目标表中显示的零替换缺失的数据。

    【讨论】:

    • 我真的需要平面格式,因为它将大大简化其余的分析。到目前为止我还不知道collapse,谢谢提示!
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2014-05-30
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多