我正在尝试将Stata中的数据集重新整形为长格式。
但是,原始数据集已经是长格式,每个给定个体都有多个观察值。每行包含给定学生在给定年份内进行的所有测试。
我想要的是每行包含给定年份中特定测试的数据。
例如,从此数据集:
+---------------------------------------------------------------------------+
| student_id | year | score_math | date_math | score_english | date_english |
|------------+------+------------+-----------+---------------+--------------|
| 111 | 2011 | . | | . | |
| 111 | 2013 | 259 | apr | 250 | apr |
| 222 | 2012 | 645 | mar | 645 | mar |
| 222 | 2014 | 640 | dec | . | |
| 333 | 2016 | . | | 358 | apr |
| 333 | 2017 | . | | 299 | jan |
+---------------------------------------------------------------------------+
我想得到以下一个:
+----------------------------------------------+
| student_id | year | test_name | score | date |
|------------+------+-----------+-------+------|
| 111 | 2011 | english | . | |
| 111 | 2011 | math | . | |
| 111 | 2013 | english | 250 | apr |
| 111 | 2013 | math | 259 | apr |
| 222 | 2012 | english | 645 | mar |
| 222 | 2012 | math | 645 | mar |
| 222 | 2014 | english | . | |
| 222 | 2014 | math | 640 | dec |
| 333 | 2016 | english | 358 | apr |
| 333 | 2016 | math | . | |
| 333 | 2017 | english | 299 | jan |
| 333 | 2017 | math | . | |
+----------------------------------------------+
我已尝试运行以下命令但由于数据很长而无效:
reshape long score* date*, i(student_id) j(test_name)
我得到的是以下信息:
变量test_name包含所有缺失值
所以我试着改为:
reshape wide score* date*, i(student_id) j(year)
接下来,假装'我的数据很长(所以我能够重塑很长时间)我用过:
egen new_id = group(student_id year)
每次观察后都有一个独特的new_id
,然后我尝试了:
reshape long score* date*, i(new_id) j(test_name)
这也不起作用。
关于如何获得所需输出的任何建议?
答案 0 :(得分:2)
以下将产生所需的输出:
clear
input student_id year score_math str3 date_math score_english str3 date_english
111 2011 . " " . " "
111 2013 259 "apr" 250 "apr"
222 2012 645 "mar" 645 "mar"
222 2014 640 "dec" . " "
333 2016 . " " 358 "apr"
333 2017 . " " 299 "jan"
end
reshape long score_ date_, i(student_id year) j(test_name) string
rename *_ *
list, sepby(student_id) abbreviate(30)
+----------------------------------------------+
| student_id year test_name score date |
|----------------------------------------------|
1. | 111 2011 english . |
2. | 111 2011 math . |
3. | 111 2013 english 250 apr |
4. | 111 2013 math 259 apr |
|----------------------------------------------|
5. | 222 2012 english 645 mar |
6. | 222 2012 math 645 mar |
7. | 222 2014 english . |
8. | 222 2014 math 640 dec |
|----------------------------------------------|
9. | 333 2016 english 358 apr |
10. | 333 2016 math . |
11. | 333 2017 english 299 jan |
12. | 333 2017 math . |
+----------------------------------------------+