我真的希望有人可以帮助我解决这个问题,因为我已经努力了一段时间。我的数据如下:
ID DATE VAR1 VAR2
01 2018-07-27 0 0
01 2018-07-28 0 0
01 2018-07-29 0 1
01 2018-07-30 0 1
01 2018-07-31 0 1
01 2018-08-01 0 0
02 2018-09-30 1 0
02 2018-10-01 0 0
02 2018-10-02 0 1
02 2018-10-03 1 1
02 2018-10-04 1 1
02 2018-10-05 0 1
02 2018-10-06 0 0
02 2018-10-07 0 0
02 2018-10-08 0 0
02 2018-10-10 0 0
02 2018-10-12 0 0
02 2018-10-13 0 0
02 2018-10-14 0 0
02 2018-10-15 1 0
02 2018-10-18 1 0
02 2018-10-19 0 0
02 2018-10-20 0 0
02 2018-10-26 0 0
02 2018-10-28 0 0
02 2018-11-02 0 1
我想知道每个ID在第一天是否存在VAR1 +/- 2天。我想将答案存储在新的数据框中,如下所示:
ID PRESENT
01 0
02 1
有人知道该怎么做吗? VAR2是月经周期。对于某些ID,我有多个经期的数据。如果VAR1在其中一个月经的第一天+/- 2天出现,我希望它们呈阳性。
谢谢!
答案 0 :(得分:2)
一种解决方法,但应该有更好的技巧:
POST http://website.nl/umbraco/api/WebApi/University?token=token
{
"countrycode": "nl",
"name": "test"
}
输出:
library(dplyr)
df %>%
group_by(ID) %>%
mutate(
DATE = as.Date(DATE),
VAR2 = ifelse(VAR2 == 1 & lag(VAR2) == 1, 0, VAR2),
PRESENT = sapply(DATE,
function(x) any(VAR1[between(DATE, x - 2, x + 2)] == 1)) & VAR2 == 1
) %>%
summarise(PRESENT = +any(PRESENT))
使用的数据:
# A tibble: 2 x 2
ID PRESENT
<int> <int>
1 1 0
2 2 1