嘗試構建條件陳述句來識別龐大資料集上的案例。我需要選擇間隔 30 天后有 >1 個代碼(即一個日期然后另一個日期 >30 天后)并且在 1 年內有多個代碼的患者。
不過,我還沒有真正弄清楚如何為此撰寫條件。這是一個示例資料集:
dates = c("2021-01-05", "2021-01-23", "2021-04-05", "2022-01-05", "2019-01-08", "2019-01-14")
patient = c("A", "A", "A", "A", "B", "B")
df <- data.frame(dates, ids)
患者 A 符合條件,因為他們的日期相隔 > 30 天,并且在 1 年內有 2 次約會
患者 B 不會,因為他們僅在 30 天內有過 2 次約會
有一些簡單的方法可以在 R 中計算嗎?似乎是一個基本問題,但我不確定如何以有效的方式將向量中的每個實體與其他實體進行比較(實際資料集有 >100,000 名患者和 >6000 萬日期)
uj5u.com熱心網友回復:
df <- data.frame(dates = as.Date(dates), patient)
這會查看每個患者,計算自上一個病例以來的時間,僅篩選出在前一個病例之后至少 30 天但少于 365 天的病例,然后顯示每個患者 ID 一次。
library(dplyr)
df %>%
arrange(dates) %>%
group_by(patient) %>%
mutate(gap = dates - lag(dates)) %>%
filter(gap > 30, gap < 365) %>%
ungroup() %>%
distinct(patient)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414502.html
標籤:
