在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_id
和reshape 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
的相关值?
答案 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]提示:如果通常变形名称在重新整形后变化(" var_year01"," var year_02"以宽格式TO" var _"以长形式),只需打开在1.中创建的标签文件(文件名),然后使用Do编辑器修改名称。
祝你好运