Stata多级重塑从长到

时间:2015-07-15 20:40:55

标签: stata reshape

我在尝试reshapelongwide的数据集时遇到了一些问题。这是一个例子,因为我认为最能解释它:

说我想要这个long数据集...

|study_id  |event_date |code     |
|--------------------------------|
|1         |09 June 15 |546      |
|1         |09 June 15 |643      |
|2         |23 May 13  |324      |
|2         |12 May 13  |435      |

并将其塑造成wide这样的人......

|study_id    |event_date_1 |event_date_1_code1 |event_date_1code2| event_date_2   |event_date_2_code1 | event_date_2_code2|
|-------------------------------------------------------------------------------------------------------------------------|
|1           |09 June 15   |546                |643              |                |                   |                   |              
|2           |23 May 15    |324                |                 |12 May 13       |435                |                   |             

这样做的最佳方法是什么?我想我必须创建某种j变量,但我不确定如何制作它,以便每个event_date可以有多个codes,每个study_id多个{ {1}}秒。

我已经尝试使用以下代码制作event_date变量并重新整形:

j

然而,这并未考虑具有多个潜在代码的每个event_date。

我正在尝试将数据转换为wide,以便我可以将其与另一个宽数据集合并,然后对两者进行分析。任何一组中的观察都是独特的study_id。

1 个答案:

答案 0 :(得分:2)

首先我要说的是,我不会选择以所要求的方式组织我的数据,因此不应将此作为支持。

话虽如此,类似下面的内容似乎可以解决问题。这些数据与您的数据相似,但我懒得处理完整的约会,我只是在本月的日子里阅读。我将此作为好奇心发布,因为我之前从未见过需要连续两次reshape wide

clear
input study_id  date code
1  09  546
1  09  643
2  23  324
2  12  435
end
list
bysort study_id date (code): generate codenum = _n
reshape wide code, i(study_id date) j(codenum)
rename code* code_*_
list
bysort study_id (date): generate eventnum = _n
reshape wide date code_*, i(study_id) j(eventnum)
list