我有一个数据框
idnr <- c(1,1,1,1,1,1,1,2,2,2,2,2,2,2,5,5,5,5,5,6,6,6,6,6,7,7,7,7)
labvalue <- c(100, 80, 75, 70, 50, 60, 55, 200, 180, 165, 160, 150, 170, 175, 300, 280, 260, 250, 255, 400, 380, 360, 350, 355, 500, 480, 460)
labdate <- as.Date(c("2022-01-01", "2022-01-02", "2022-01-03", "2022-01-04", "2022-01-05", "2022-01-06", "2022-01-07",
"2022-01-08", "2022-01-09", "2022-01-10", "2022-01-11", "2022-01-12", "2022-01-13", "2022-01-14",
"2022-01-15", "2022-01-16", "2022-01-17", "2022-01-18", "2022-01-19", "2022-01-20", "2022-01-21",
"2022-01-22", "2022-01-23", "2022-01-24", "2022-01-25", "2022-01-26", "2022-01-27"))
data <- data.frame(idnr, labvalue, labdate)
我想为每个idnr创建一个变量,指示唯一idnr的实验室检查值是否在2天内下降40或以上。为了澄清,如果唯一idnr的实验室检查值为200,我想检查是否有任何实验室检查值在实验室检查值200日期之后但在48小时内采集,即160或以下。
如果日期也有时间戳的话,我希望它能正常工作。我知道我可能需要做一个for循环,但是我不能让它正常工作。
1条答案
按热度按时间yjghlzjz1#
您可以创建一个helper函数来检查每行是否有2天内的丢弃,然后使用
purrr::map2_lgl()
应用于日期和值,并按idnr
分组。同样的代码也适用于POSIX时间戳。