R にデータフレームがあり、かなり大きな600行/観測があります
1 つの列はpatientId
数値形式ではありません (例: ju89、ju87)。これは因子列です。
1 つの列はremission
1/0 で、1 は寛解を意味し、0 は寛解していないことを意味します。
1つの列はtimefromdiagnosis
現在、患者は診断から 1 から 0、0 から 0、0 から 1、または 1 から 1 に変化します。
データフレームに列を追加したい
- 患者の寛解が 0 の場合は 1
- 2 正確には、患者の寛解が 1 で、前回が 0、または 1 が寛解で、最後に 1 が寛解、または 1 が寛解で、それが彼の最初の観察である場合
- 3 患者に 1 回の寛解があり、最後の 2 回以上で 1 回の寛解があった場合
兼合計でこれを行うことを検討しました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 回連続して寛解したため (過去 2 回の寛解と現在)、患者がどのように 3 に達したかに注目してください。寛解。
患者ju88
は t=2 で寛解し、前回の t=1.5 で寛解しましたが、これは t=2 を含めて 2 回連続した寛解であり、病期 2 です。
患者ju23
は t=1.9 で寛解が 1 であり、これが彼の最初の観察であるため、病期 2 の基準を満たします。寛解が 0 の場合、患者は病期 1 になります。