重新整形时,将值标签带到变量标签

时间:2013-08-14 15:33:58

标签: stata

在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的相关值?

2 个答案:

答案 0 :(得分:3)

一般情况下,应用reshape并且跨越变量或值标签可能会很尴尬,但请参阅http://www.stata.com/support/faqs/data-management/apply-labels-after-reshape/处的文档以进行详细讨论。

在您的情况下,您的reshape代码所做的是处理charges并为每个不同的医院创建单独的变量。 (您的问题是:如何以编程方式将hosp_id变量的相关值标记为hosp_name?但hosp_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是{{1}}首次撰写之后的一种思考。

答案 1 :(得分:0)

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

的更多信息

ssc install varlab

1.然后只保存变量标签 varlab使用文件名 [,替换]

保存[varlist]
  1. 重新塑造数据集后,加载它们 varlab load [varlist]使用文件名 [,替换]
  2. 提示:如果通常变形名称在重新整形后变化(" var_year01"," var year_02"以宽格式TO" var _"以长形式),只需打开在1.中创建的标签文件(文件名),然后使用Do编辑器修改名称。

    祝你好运