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