【问题标题】:Bring value labels to variable labels when reshaping wide重塑宽时将值标签带到变量标签
【发布时间】:2015-02-24 04:30:06
【问题描述】:

在 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_name 的关联值标记每个 hosp_id 变量?

【问题讨论】:

    标签: stata


    【解决方案1】:

    一般来说,应用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 首次编写之后的事后思考。

    【讨论】:

      【解决方案2】:

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

      ssc 安装 varlab

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

      1. 一旦你的数据集被重塑,加载它们 varlab 加载 [varlist] 使用 filename [, replace ]​​i>

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

      祝你好运

      【讨论】:

      • 这忽略了问题的重点,即在reshape 之后需要成为变量标签的是值标签。首先保存变量标签并重复使用它们充其量是针对不同的问题。
      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2014-07-06
      • 2011-03-09
      相关资源
      最近更新 更多