Stata:重塑数据集–将变量标签带到变量值

Stata:重塑数据集–将变量标签带到变量值,stata,Stata,我有一个数据集,其中包含在每个模拟中生成的不同产品值,布局如下: +------------+-------+-------+-------+ | simulation | v1 | v2 | v3 | +------------+-------+-------+-------+ | 1 | 0,500 | 0,400 | 0,300 | | 2 | 0,900 | 0,800 | 0,800 | | 3 | 0,100 |

我有一个数据集,其中包含在每个模拟中生成的不同产品值,布局如下:

+------------+-------+-------+-------+
| simulation |  v1   |  v2   |  v3   |
+------------+-------+-------+-------+
|          1 | 0,500 | 0,400 | 0,300 |
|          2 | 0,900 | 0,800 | 0,800 |
|          3 | 0,100 | 0,200 | 0,300 |
+------------+-------+-------+-------+
变量名v1、v2、v3标记为产品ID,不显示在数据集的标题处。我需要将此数据集重塑为长格式,以便它如下所示:

+------------+----+----------+-------+
| simulation | id |  label   | value |
+------------+----+----------+-------+
|          1 | v1 | 01020304 | 0,500 |
|          1 | v2 | 01020305 | 0,400 |
|          1 | v3 | 01020306 | 0,300 |
|          2 | v1 | 01020304 | 0,900 |
|          2 | v2 | 01020305 | 0,800 |
|          2 | v3 | 01020306 | 0,800 |
|          3 | v1 | 01020304 | 0,100 |
|          3 | v2 | 01020305 | 0,200 |
|          3 | v3 | 01020306 | 0,300 |
+------------+----+----------+-------+

标准代码重塑长v,I模拟j_计数在这种情况下不适用,因为我需要重塑变量标签,并将它们作为变量值保留在数据集中。我想知道是否有一种方法可以用可变标签进行这种转换?

这里似乎只需要一个想法。如果变量标签会消失,请在重塑之前将其保存在本地宏中,然后将其作为值标签应用。前面引用的常见问题解答提供了这种味道

沙坑游戏:

input simulation   v1     v2     v3   

    simulat~n         v1         v2         v3
1. 1  0.500  0.400  0.300 
2. 2  0.900  0.800  0.800 
3. 3  0.100  0.200  0.300 
4. end 

label var v1 "01020304"
label var v2 "01020305"
label var v3 "01020306"
示例代码:

forval j = 1/3 { 
    local labels `labels' `j' "`: var label v`j''"
} 


reshape long v, i(simulation)  
(note: j = 1 2 3)

Data                               wide   ->   long
-----------------------------------------------------------------------------
Number of obs.                        3   ->       9
Number of variables                   4   ->       3
j variable (3 values)                     ->   _j
xij variables:
                               v1 v2 v3   ->   v
-----------------------------------------------------------------------------

rename v value 
label def label `labels' 
rename _j label
gen id = label 
label val label label  


list 

     +----------------------------------+
     | simula~n      label   value   id |
     |----------------------------------|
  1. |        1   01020304      .5    1 |
  2. |        1   01020305      .4    2 |
  3. |        1   01020306      .3    3 |
  4. |        2   01020304      .9    1 |
  5. |        2   01020305      .8    2 |
     |----------------------------------|
  6. |        2   01020306      .8    3 |
  7. |        3   01020304      .1    1 |
  8. |        3   01020305      .2    2 |
  9. |        3   01020306      .3    3 |
     +----------------------------------+

变量标签来自哪里?更一般地说,这不是一个我如何用语言Y做X是一个标准问题的网站。您需要显示自己的代码尝试,光说重塑不能实现您想要的还不够。初学者的问题可以在www.statalist.org上找到,但不在这里。提示:请同时查看堆栈,然后单击。简而言之,有一些文档您没有看到。我现在理解了关于变量标签的第一部分。嗨!我的数据集很容易带有标签变量,这些变量在从.dat格式传输到Stata时会自动创建。谢谢你给我指出了相关的参考资料,我将在下一篇文章中更加精确。我需要再看一下你的例子,猜测变量标签必须来自变量标签。请注意,带标签的变量是不明确的,因为它可能意味着变量标签或值标签。