1

在 Stata 中,我希望能够在调整宽度时将值标签提升为变量标签。

我的原始数据如下所示:

patient hosp_id     hosp_name               charges
Andrew  1           Springfield General     $10 
Barry   1           Springfield General     $20 
Crista  2           Lincoln Medical Center  $10 
Doris   2           Lincoln Medical Center  $15 
Ellen   1           Springfield General     $15 
Faye    3           Memorial Hospital       $35 

然后我标记 和 的hosp_idreshape wide

label define hosp_names 1 "Springfield General" 2 "Lincoln Medical Center" 3 "Memorial Hospital"
label value hosp_id hosp_names
reshape wide charges, i(patient) j(hosp_id)

我希望我放置的标签hosp_id遵循它们的关联值并成为变量标签。我知道我可以在重塑后一个一个地标记变量,但这对于一组更大的 j 值(在本例中为医院)可能是不切实际的。如何以编程hosp_id方式使用关联值标记每个变量?hosp_name

4

2 回答 2

4

一般来说,应用reshape和携带变量或值标签可能会很尴尬,但请参阅http://www.stata.com/support/faqs/data-management/apply-labels-after-reshape/上的文档以获取详细讨论。

在您的情况下,您的reshape代码所做的是charges为每个不同的医院处理并制作一个单独的变量。(您的问题指出:如何以编程hosp_id方式使用关联值标记每个变量?但保持不变。)hosp_namehosp_id

有一种更直接的方法可以使用separate. 这是一个与您的示例几乎相同的示例。

. input str6 patient hosp_id  str22 hosp_name  charges

    patient    hosp_id               hosp_name    charges
 1. "Andrew"  1           "Springfield General"     10 
 2. "Barry"   1           "Springfield General"     20 
 3. "Crista"  2           "Lincoln Medical Center"  10 
 4. "Doris"   2           "Lincoln Medical Center"  15 
 5. "Ellen"   1           "Springfield General"     15 
 6. "Faye"    3           "Memorial Hospital"       35 
 7. end 

. separate charges, by(hosp_name) veryshortlabel 

               storage  display     value
variable name   type   format      label      variable label
----------------------------------------------------------------------------------------
charges1        byte   %9.0g                  Lincoln Medical Center
charges2        byte   %9.0g                  Memorial Hospital
charges3        byte   %9.0g                  Springfield General

该选项veryshortlabel在帮助和手册中没有记录,但在这里很有用。自然不是强制的。在http://www.stata-journal.com/sjpdf.html?articlenum=gr0023中提到过,本质上是第一次写veryshortlabel后的事后思考。separate

于 2013-08-14T17:39:05.730 回答
0

简短、简单并完成工作:安装 varlab 模块,更多信息来自https://ideas.repec.org/c/boc/bocode/s425001.html

ssc 安装 varlab

1 .然后只需保存变量标签 varlab save [varlist] using filename [, replace ]

  1. 重新调整数据集后,使用文件名[, replace ]加载它们 varlab load [varlist ]

提示:如果变量名称在整形后发生变化(“var_year01”、“var year_02” in wide form TO “var_” in long form),只需打开 1 中创建的标签文件(filename)并使用做编辑。

祝你好运

于 2015-02-23T20:30:06.247 回答