如何在R中的特定日期+/- 2天检查变量

时间:2019-02-25 13:16:06

标签: r

我真的希望有人可以帮助我解决这个问题,因为我已经努力了一段时间。我的数据如下:

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天出现,我希望它们呈阳性。

谢谢!

1 个答案:

答案 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