Внутри каждого id я хотел бы сохранить строки, по крайней мере, на 91 день. В моем кадре df ниже id=1 имеет 5 строк и id=2 имеет 1 строку.
Для id=1, я хотел бы сохранить только 1-й, 3-й и 5-й строки.
Это связано с тем, что если мы сравним 1-ю дату и 2-ю дату, они будут отличаться на 32 дня. Итак, удалите вторую дату. Мы переходим к сравнению 1-й и 3-й даты, и они отличаются на 152 дня. Итак, мы сохраняем 3-й день.
Теперь, вместо использования 1-й даты в качестве ссылки, мы используем 3-ю дату. 3-я дата и 4-я дата отличаются на 61 день. Итак, удалите 4-ю дату. Мы переходим к сравнению 3-й даты и 5-й даты, и они отличаются на 121 день. Итак, мы сохраняем 5-ю дату.
В конце концов, даты, которые мы сохраняем, - это 1, 3 и 5 даты. Что касается id=2, то есть только одна строка, поэтому мы сохраняем это. Желаемый результат показан в dfnew.
df <- read.table(header = TRUE, text = "
id  var1  date        
 1  A     2006-01-01 
 1  B     2006-02-02 
 1  C     2006-06-02 
 1  D     2006-08-02 
 1  E     2007-12-01 
 2  F     2007-04-20 
",stringsAsFactors=FALSE)
dfnew <- read.table(header = TRUE, text = "
id  var1  date        
 1  A     2006-01-01 
 1  C     2006-06-02 
 1  E     2007-12-01 
 2  F     2007-04-20 
",stringsAsFactors=FALSE)
Я могу думать только о начале группировки df на id следующим образом:
library(dplyr)
dfnew <- df %>% group_by(id)
Однако я не уверен, как продолжить здесь. Должен ли я продолжить функцию filter или slice? Если да, то как?
