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时会自动创建。谢谢你给我指出了相关的参考资料,我将在下一篇文章中更加精确。我需要再看一下你的例子,猜测变量标签必须来自变量标签。请注意,带标签的变量是不明确的,因为它可能意味着变量标签或值标签。