我有一些关于疾病和诊断年龄的数据。每个参与者被问及他们患有哪些疾病以及疾病被诊断的年龄。
有一组变量disease1-28
,每种疾病都有一个数字代码,另一组age1-28
,诊断年龄为几年。根据召回的顺序将疾病置于连续变量中;诊断年龄放在适当的年龄变量中。
我想为几种疾病中的每一种产生一个新的变量,给出该疾病的诊断年龄:例如asthma_age_at_diagnosis
我可以在没有28个replace
陈述的情况下这样做吗?
数据示例:
+-------------+----------+----------+----------+------+------+------+
| Participant | Disease1 | Disease2 | Disease3 | Age1 | Age2 | Age3 |
+-------------+----------+----------+----------+------+------+------+
| 1 | 123 | 3 | . | 30 | 2 | . |
| 2 | 122 | 123 | 5 | 23 | 51 | 44 |
| 3 | 5 | . | . | 50 | . | . |
+-------------+----------+----------+----------+------+------+------+
答案 0 :(得分:0)
我提出了一个通常的提示,即没有任何自己的代码的这种形式的问题通常被认为是Stack Overflow的主题。尽管如此,这里的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
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
。