当数据集很大时如何在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 中记录了如何获取存根。