基于公共标识符将多行折叠为一行



在Stata中工作,假设我有一个这样的数据表。。。

cd//tr>lno
家庭标识符 个人标识符 Var1 Var2
1 1 a b
1 1
1 2 e f
2 1 g h
2 1 i j
2 1 k
2 2 m
2 2p
3 1 q r

您可以使用reshape wide两次。请注意,当我创建rowid时,我会给它添加一个下划线;我还为var1var2列添加了下划线。在第一个reshape调用中,我使用stringrowid标识为字符串变量

bysort householdidentifier personidentifier: gen rowid = strofreal(_n) + "_"
rename var* =_
reshape wide var1 var2, i(householdidentifier personidentifier) j(rowid) string
reshape wide var*, i(householdidentifier) j(personidentifier)

输出:


househ~r   var1_1_1   var2_1_1   var1_2_1   var2_2_1   var1_3_1   var2_3_1   var1_1_2   var2_1_2   var1_2_2   var2_2_2   var1_3_2   var2_3_2  
1.          1          a          b          c          d                                e          f                                              
2.          2          g          h          i          j          k          l          m          n          o          p                        
3.          3          q          r                                                                                                                

最新更新