Stata多级重塑从宽到长
Stata multiple level reshape wide to long
我在尝试 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
多个 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
我在尝试 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
多个 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