Stata多级重塑从宽到长

Stata multiple level reshape wide to long

我在尝试 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 多个 event_date秒。

我已经尝试使用以下代码制作 j 变量并进行整形:

//Sort by id (just in case)
sort study_id event_date code

//Create j variable
quietly by study_id: gen code_num = cond(_N==1, 1, _n)

//Reshape data
reshape wide event_date code, i(study_id) j(code_num)

然而,这并没有说明每个 event_date 都有多个潜在代码。

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

首先让我说,我永远不会选择以要求的方式组织我的数据,因此这不应被视为支持这样做。

话虽如此,像下面这样的东西似乎可以解决问题。数据与您的相似,但我懒得处理完整日期,我只是在每月的某一天阅读。我发布这个是出于好奇,因为我以前从未见过需要连续执行两次 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