【问题标题】:How can I reshape without a unique "j" variable in Stata?在Stata中没有唯一“j”变量的情况下如何重塑?
【发布时间】:2012-06-25 21:17:44
【问题描述】:

所以这是我的麻烦:我想将一个长格式数据文件重新调整为宽格式。但是,我没有唯一的“j”变量;长格式文件中的每条记录都有几个关键变量。

例如,我想拿这个:

| caseid | gender | age | relationship to respondent|
|---------------------------------------------------|
| 1234   |   F    | 89  | mother                    |
| 1234   |   F    | 10  | daughter                  |
| 1235   |   M    | 15  | cousin                    |
etc

把它变成这样:

|caseid  | gender1 | age1 | rel1  |  gender2  | age2 | rel2    |
|--------------------------------------------------------------|
| 1234   | F       | 89   | mother| F         | 10   | daughter|
| 1235   | M       | 15   | cousin| .         | .    | .       |
etc

但是,数据缺少 reshape 命令所需的后缀变量。 Stata有没有办法自动生成这个后缀?

【问题讨论】:

    标签: reshape stata


    【解决方案1】:

    样本数据:

         +----------------------------------+
         | caseid   gender   age   relati~p |
         |----------------------------------|
      1. |   1234        F    89     mother |
      2. |   1234        F    10   daughter |
      3. |   1235        M    15     cousin |
      4. |   1235        F    14     sister |
      5. |   1235        F    55     mother |
         |----------------------------------|
      6. |   1236        M    32    brother |
      7. |   1236        M    68     father |
         +----------------------------------+
    

    生成一个新的id:

    . by caseid: gen newid = _n
    

    给你这个:

         +------------------------------------------+
         | caseid   gender   age   relati~p   newid |
         |------------------------------------------|
      1. |   1234        F    89     mother       1 |
      2. |   1234        F    10   daughter       2 |
      3. |   1235        M    15     cousin       1 |
      4. |   1235        F    14     sister       2 |
      5. |   1235        F    55     mother       3 |
         |------------------------------------------|
      6. |   1236        M    32    brother       1 |
      7. |   1236        M    68     father       2 |
         +------------------------------------------+
    

    你现在可以用这个来重塑:

    . reshape wide gender age relationship, i(caseid) j(newid)
    

    要得到这个:

         +--------------------------------------------------------------------------------------------+
         | caseid   gender1   age1   relati~1   gender2   age2   relati~2   gender3   age3   relati~3 |
         |--------------------------------------------------------------------------------------------|
      1. |   1234         F     89     mother         F     10   daughter                .            |
      2. |   1235         M     15     cousin         F     14     sister         F     55     mother |
      3. |   1236         M     32    brother         M     68     father                .            |
         +--------------------------------------------------------------------------------------------+
    

    【讨论】:

    • 谢谢!!这轻松完成了任务。 “by”子设置是一种有用的技术,比我试图实现的“if”语句要优雅得多。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多