Stata 通过从多个变量中选择来生成新变量

Stata 通过从多个变量中选择来生成新变量,stata,Stata,我有一些关于疾病和诊断年龄的数据。每个参与者都被问及他们患过什么疾病,以及在什么年龄诊断出这种疾病。 有一组变量disease1-28,每个疾病有一个数字代码,另一组变量age1-28,诊断年龄以年为单位。疾病按回忆顺序排列在连续变量中;诊断年龄放在适当的年龄变量中 我想为几种疾病中的每一种产生一个新的变量,给出该疾病的诊断年龄:例如,哮喘 我可以在没有28个replace语句的情况下执行此操作吗 数据示例: +-------------+----------+----------+------

我有一些关于疾病和诊断年龄的数据。每个参与者都被问及他们患过什么疾病,以及在什么年龄诊断出这种疾病。 有一组变量
disease1-28
,每个疾病有一个数字代码,另一组变量
age1-28
,诊断年龄以年为单位。疾病按回忆顺序排列在连续变量中;诊断年龄放在适当的年龄变量中

我想为几种疾病中的每一种产生一个新的变量,给出该疾病的诊断年龄:例如,
哮喘

我可以在没有28个
replace
语句的情况下执行此操作吗

数据示例:

+-------------+----------+----------+----------+------+------+------+  
| Participant | Disease1 | Disease2 | Disease3 | Age1 | Age2 | Age3 |  
+-------------+----------+----------+----------+------+------+------+    
|           1 |      123 | 3        | .        |   30 | 2    | .    |  
|           2 |      122 | 123      | 5        |   23 | 51   | 44   |  
|           3 |        5 | .        | .        |   50 | .    | .    |  
+-------------+----------+----------+----------+------+------+------+  

我给出了一个一般性的提示,这种形式的问题如果没有自己的代码,通常会被认为是堆栈溢出的主题之外的问题。尽管如此,这里的Stata用户都是回答Stata问题的人(令人惊讶),我们通常会沉迷于这样的问题,如果这些问题有趣且摆得很好的话

我建议使用不同的数据结构,句号。使用您的示例数据

clear 
input Patient Disease1 Disease2 Disease3 Age1 Age2 Age3 
1 123 3 . 30 2 . 
2 122 123 5 23 51 44 
3 5 . . 50 . . 
end 
您可以
重塑

reshape long Disease Age, i(Patient) j(Order)
drop if missing(Disease)
list, sep(0) 

   +--------------------------------+
   | Patient  Order   Disease   Age |
   |--------------------------------|
1. |       1      1       123    30 |
2. |       1      2         3     2 |
3. |       2      1       122    23 |
4. |       2      2       123    51 |
5. |       2      3         5    44 |
6. |       3      1         5    50 |
   +--------------------------------+
有了此表单中的数据,您现在可以轻松回答许多问题。我不认为一大堆新的变量会使许多分析更容易。另一种方式是你暗示疾病编码的顺序是任意的;因此,将其连接到数据结构中是不明智的。即使顺序很重要,它仍然可以作为数据集的一部分进行访问(变量
order

提示:如果出于某些目的仍然需要单独的变量,请查看
separate