我在 R 中有一个数据框,相当大的 600 行/观察值
一列patientId
不是数字形式,例如 ju89、ju87,所以它是一个因子列
一列是remission
1/0,其中 1 表示缓解 0 表示不缓解
一列是timefromdiagnosis
现在,从诊断开始,患者从 1 到 0、0 到 0、0 到 1 或 1 到 1
我想在它所在的数据框中添加一列
- 1 当患者缓解时为 0
- 2 当患者正好有 1 个缓解时,他最后一次有 0 或有 1 个缓解,他最后一次有 1 缓解或有 1 缓解,这是他的第一次观察
- 3 当患者有 1 次缓解且最近 2 次或更多次有 1 次缓解时
我考虑用 cum sum in 来做这件事plyr
,但它不适合我想做的事情,或者不太清楚如何适应
数据框已经排序,因此患者 ID 彼此相邻,并且随着您阅读数据框,每个患者的诊断时间都会增加
由于机密性,我无法提供数据框,但在这里它看起来像是为了澄清事情
remission timefromdiag patientid ...(other variables)
这是我开始的数据:
patientId timefromdiagnosis remission
ju67 1.2 1
ju67 1.6 0
ju67 3 0
ju88 1.5 1
ju88 2 1
ju23 1.9 1
ju23 5 0
这是我想要得到的,疾病阶段是我想要的专栏:
patientId timefromdiagnosis remission disease stage
ju67 1.2 1 2
ju67 1.6 0 1
ju67 3 0 1
ju88 1.5 1 2
ju88 2 1 2
ju23 1.9 1 2
ju23 5 0 1
ju38 1.7 1 2
ju38 1.9 1 2
ju38 3 1 3
ju38 4 1 3
ju38 5 0 1
请注意患者如何ju38
达到 3,因为他已经连续 3 次缓解,包括现在的时间(最近两次缓解和现在),然后他停留在 3,因为他只是有另一个缓解,然后他进入疾病阶段 1,因为他有一个 0缓解。
患者ju88
在 t=2 时有缓解,在最后一次 t=1.5 时有缓解,但这只是包括 t=2 在内的两次连续缓解,因此他处于疾病 2 期
患者ju23
在 t=1.9,缓解期为 1,这是对他的第一次观察,因此他满足疾病阶段 2 的标准,如果缓解期为 0,他将处于疾病阶段 1