【发布时间】:2015-07-15 20:40:55
【问题描述】:
我在尝试 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_dates。
我已经尝试使用以下代码制作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。
【问题讨论】:
-
我建议您需要一个非常好的理由来偏爱这种数据结构。你所拥有的要简单得多。也许你可以解释一下你想用它做什么以及为什么它对任何目的都会更好。
-
我有另一个数据集,其中包含有关每个 study_id 的信息。我想在分析中使用这两个数据集,因此我尝试将其转换为宽数据集,然后将其与我现有的宽数据集合并。
-
目前的结构仍然可以合并。在这两种结构中,定义观察的内容并不明显。您大概知道,但是在您的问题中很明显吗? (你可能看不到,但是有两个人在这里发布了答案然后又删除了它们,而且似乎都没有明确向你推荐什么。)
-
我编辑了我的帖子,让我知道我还能做些什么来帮助澄清。另一个数据集相当大,有大约 300 个变量,理想情况下,我会将所有信息放在一个更大的数据集中。
-
什么定义了观察?这对我来说仍然不清楚。