我有一個資料集,其中每一行是對患者的每月觀察,監測他們是否對某種疾病(狀態)呈陽性反應。
我知道他們被診斷的月份(即每個 ID 的行號 - TimeToDx),我想要做的是有一個從 0 切換到 1 的二進制指示器,從 TimeToDx 中指示的觀察月份開始。
基本上我需要通過 TimeToDx - 1 復制 0,然后對于每個 ID 的其余行復制 1。
這是一些示例資料 - 沒有填充狀態指示器:
ID TimeToDx Status
10425 2
10425 2
10425 2
10425 2
10667 3
10667 3
10667 3
10667 3
10667 3
10686 2
10686 2
10686 2
10686 2
10686 2
17096 5
17096 5
17096 5
17096 5
17096 5
這是我想看到的:
ID TimeToDx Status
10425 2 0
10425 2 1
10425 2 1
10425 2 1
10667 3 0
10667 3 0
10667 3 1
10667 3 1
10667 3 1
10686 2 0
10686 2 1
10686 2 1
10686 2 1
10686 2 1
17096 5 0
17096 5 0
17096 5 0
17096 5 0
17096 5 1
任何幫助將非常感激。
uj5u.com熱心網友回復:
這是dplyr. 在每個 ID 內分組,我們將該組內的行與TimeToDx. TRUE x 1 = 1,FALSE x 1 = 0。可以交替使用mutate(Status = if_else(row_number() >= TimeToDx, 1, 0)).
library(dplyr)
df %>%
group_by(ID) %>%
mutate(Status = 1 * (row_number() >= TimeToDx)) %>%
ungroup()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328714.html
