У меня есть таблица для идентификаторов пользователей и учетных записей, которая работает с 2017-01-01 по 2018-05-01. Это нечасто, поэтому я хочу посмотреть, будут ли они регистрироваться +/- 45 дней одной и той же даты каждый год (в приведенном ниже коде я использовал 320/410, я уточню даты позже, если в этом нет необходимости).
loginID userID date
1 a 2017-01-03
2 b 2017-01-12
3 c 2017-01-14
4 d 2017-01-19
5 d 2017-10-18
6 a 2017-11-30
7 b 2017-12-09
8 c 2017-12-17
9 a 2017-12-30
10 b 2018-01-15
Я пытаюсь написать цикл, в котором таблица ссылается на себя. Лучшее, что у меня есть (не работает, но через несколько попыток):
for (row in 1:nrow(df)){
target <- subset(df, date < (row$date+410))
target <- subset(target, date > (row$date+320))
target <- target$userID
df$ninety <- row$userID %in% target
}
Результаты, которые я ищу:
loginID userID date repeat_oneyr
1 a 2017-01-03 TRUE
2 b 2017-01-12 TRUE
3 c 2017-01-14 TRUE
4 d 2017-01-19 FALSE
5 d 2017-10-18 FALSE
6 a 2017-11-30 FALSE
7 b 2017-12-09 FALSE
8 c 2017-12-17 FALSE
9 a 2017-12-30 FALSE
10 b 2018-01-15 FALSE
(Причина, по которой все после / включая 2017-10-18 - ЛОЖЬ, заключается в том, что у нас нет данных для входа в систему, чтобы показать, вошли ли они в систему в период между 320 и 410 днями с тех пор).
Я знаю (из других вопросов / ответов SO), что если я могу получить TRUE / FALSE, повторяемый для каждого loginID, я могу использовать match()
для объединения фреймов данных, поэтому я не беспокоюсь об этой части - это получить ИСТИНА / ЛОЖЬ в первую очередь.
Любые советы приветствуются / приветствуются.