【发布时间】:2022-01-16 22:25:02
【问题描述】:
我有一个数据集,其中包含接受 72 小时观察的患者。每 4 秒测量一次患者的氧气水平,但由于数据准确性问题,必须删除一些观察结果。因此,患者有不同数量的观察结果。
在观察患者的同时,他们接受了各种干预措施。我分析的目的是评估干预措施是否影响患者的氧气水平。因此,我正在对干预前、干预期间和干预后的氧气水平进行比较。
虽然实际分析并不太难,但我很难对数据进行子集化。例如,我只想要干预开始前 300 秒和干预后 300 秒的观察结果。我必须考虑一个事实,即一个人在时间窗的过程中可能有多次干预,并且有多个受试者。
我在下面提供了一些示例代码来生成数据集,但如果我遗漏任何内容,请告诉我。
id <- rep(c(1,2,3), each = 1000)
intervention <- c(rep(0,200), rep(1,10), rep(0,153), rep(0,5), rep(0,284), rep(0,20), rep(0,159), rep(0,23), rep(0,146),
rep(0,123), rep(1,23), rep(0,356), rep(1,8), rep(0,234), rep(1,23), rep(0,233),
rep(0,345), rep(1,12), rep(0,48), rep(1,15), rep(0,74), rep(1,4), rep(0,233), rep(1,82), rep(0,187))
final <- data.frame(id, intervention)
final <- final %>%
group_by(id) %>%
mutate(time = row_number() * 4)
到目前为止,我已经尝试过这种方法,但我只能隔离干预前后 5 分钟的单个观察结果,而不是这些时间窗之间的所有观察结果(即干预开始前 5 分钟的单个观察结果和干预后 5 分钟的单次观察,但不是这三点之间的所有观察)
data <- final4 %>%
filter(intervention == 1) %>%
mutate(five_mins_after = time + 300, #5 mins after intervention
five_mins_before = time - 300) %>% #5 mins before intervention %>%
filter(id == "1")
data2 <- final4 %>%
filter(intervention == 0,
id == "1")
data_after <- data %>%
dplyr::select(five_mins_after)
data_before <- data %>%
dplyr::select(five_mins_before)
data3 <- merge(data2, data_after, by.x = "time", by.y = "five_mins_after")
data4 <- merge(data2, data_before, by.x = "time", by.y = "five_mins_before")
final <- final %>%
dplyr::bind_rows(data3) %>%
dplyr::bind_rows(data4)
如果您需要任何其他信息,请告诉我,感谢您的宝贵时间!
PS:如有遗漏,第一次在这里寻求帮助表示歉意
【问题讨论】: