当数据集很大时如何在Stata中将宽类型转换为长类型
How to transform wide type to long type in Stata when the data set is big
我有以下面板数据集:
ID SEX age_t1 age_t2 C1_Q1 C1_Q2 ... C2_Q1 C2_Q2 ... C3_Q1 .... C4_Q1
1 female 17 20 1 2 3 5 2 4
C1 是 2014 年,C4 是 2017 年。
问题是问题的数量因年份而异。
我推测通过指定列数使用 stack
可能会起作用。
例如,从第 5 列到第 10 列成为第一组,从第 6 列到第 12 列成为第二组。
但是我不知道怎么做。
如果问题的数量因年份而异,那么您的建议的逻辑就很难理解。
Stata 标签 wiki 提供了有关如何呈现数据示例的建议,这些示例通常需要简化但应尽可能真实,而不是示意性的。
这可能有帮助:
clear
input ID SEX age_t1 age_t2 C1_Q1 C1_Q2 C2_Q1 C2_Q2 C3_Q1 C3_Q2
1 1 17 20 1 2 3 5 2 4
end
rename (C*_Q*) (Q*_C*)
unab stubs : *_C1
local stubs : subinstr local stubs "_C1" "", all
reshape long `stubs', i(ID SEX age*) j(year) string
destring year, ignore(_C) replace
replace year = year + 2013
list
+--------------------------------------------------+
| ID SEX age_t1 age_t2 year Q1 Q2 Q3 |
|--------------------------------------------------|
1. | 1 1 17 20 2014 1 3 2 |
2. | 1 1 17 20 2015 2 5 4 |
+--------------------------------------------------+
this FAQ 中记录了如何获取存根。
我有以下面板数据集:
ID SEX age_t1 age_t2 C1_Q1 C1_Q2 ... C2_Q1 C2_Q2 ... C3_Q1 .... C4_Q1
1 female 17 20 1 2 3 5 2 4
C1 是 2014 年,C4 是 2017 年。
问题是问题的数量因年份而异。
我推测通过指定列数使用 stack
可能会起作用。
例如,从第 5 列到第 10 列成为第一组,从第 6 列到第 12 列成为第二组。
但是我不知道怎么做。
如果问题的数量因年份而异,那么您的建议的逻辑就很难理解。
Stata 标签 wiki 提供了有关如何呈现数据示例的建议,这些示例通常需要简化但应尽可能真实,而不是示意性的。
这可能有帮助:
clear
input ID SEX age_t1 age_t2 C1_Q1 C1_Q2 C2_Q1 C2_Q2 C3_Q1 C3_Q2
1 1 17 20 1 2 3 5 2 4
end
rename (C*_Q*) (Q*_C*)
unab stubs : *_C1
local stubs : subinstr local stubs "_C1" "", all
reshape long `stubs', i(ID SEX age*) j(year) string
destring year, ignore(_C) replace
replace year = year + 2013
list
+--------------------------------------------------+
| ID SEX age_t1 age_t2 year Q1 Q2 Q3 |
|--------------------------------------------------|
1. | 1 1 17 20 2014 1 3 2 |
2. | 1 1 17 20 2015 2 5 4 |
+--------------------------------------------------+
this FAQ 中记录了如何获取存根。