我在尝试reshape
从long
到wide
的数据集时遇到了一些问题。这是一个例子,因为我认为最能解释它:
说我想要这个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。
答案 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