我有一些关于疾病和诊断年龄的数据。每一位参与者都被问到他们患过什么疾病,以及在什么年龄被诊断出这种疾病。有一组变量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 | . | . |
+-------------+----------+----------+----------+------+------+------+
发布于 2014-02-12 14:55:07
我给出了一个一般性的提示,这个表单中没有任何代码的问题通常被认为是堆栈溢出的非主题。尽管如此,这里的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
。
https://stackoverflow.com/questions/21729278
复制相似问题