Сравнивать даты сравнения в следующих строках

Jack_Carver спросил: 13 июня 2018 в 07:37 в: r

У меня есть этот фреймворк в R

  raw_payment_id from_bank_account        amount posted_at 
           <int> <chr>                     <dbl> <date>    
1         620691 SK660900000000062087       20.0 2018-02-25
2         618433 SK660900000000062087       10.0 2018-02-27
3         623157 SK660900000000062087       10.0 2018-03-02
4         628236 SK300900000000506871      812.  2018-03-06
5         627899 SK300900000000506871      812.  2018-03-07
6         628966 SK660900000000062087       10.0 2018-03-09

Моя цель - найти, если оплата с той же учетной записи и на такую ​​же сумму был отправлен в течение 3 дней. И если да, отметьте оба платежа с 1. Таким образом, результат будет.

  raw_payment_id from_bank_account        amount posted_at     test 
           <int> <chr>                     <dbl> <date>        <int> 
1         620691 SK660900000000062087       20.0 2018-02-25    0
2         618433 SK660900000000062087       10.0 2018-02-27    1
3         623157 SK660900000000062087       10.0 2018-03-02    1
4         628236 SK300900000000506871      812.  2018-03-06    1
5         627899 SK300900000000506871      812.  2018-03-07    1
6         628966 SK660900000000062087       10.0 2018-03-09    0

Я не могу найти способ, как это сделать, мои попытки с отставанием / что с банковского счета может быть только один платеж.

2 ответа

Len ответил: 13 июня 2018 в 08:02
Hack-R ответил: 13 июня 2018 в 08:06
library(dplyr)# Within each accounts, how many transactions were the same amount
tmp <- mydat %>% 
  group_by(from_bank_account, amount) %>% 
  mutate(number_of_dupes = n()) %>% 
  filter(number_of_dupes > 1) # only keep duplicates# remove dups > 3 days apart
tmp$dup <- 0for(i in 1:nrow(tmp)){
  acct <- tmp$from_bank_account[i]
  n    <- tmp$number_of_dupes[i]  if(length(tmp$dup[(abs(difftime(tmp$posted_at[i],tmp$posted_at,units = "days")) < 4)
                    & (tmp$from_bank_account == acct)]) > 1){
    tmp$dup[i] <- 1
  }
}
tmp <- tmp[tmp$dup==1,]mydat$flag_duplicate <- ifelse(mydat$raw_payment_id %in% tmp$raw_payment_id,1,0)

Дополнительное видео по вопросу: Сравнивать даты сравнения в следующих строках

Сравнение дат на JavaScript, разность между датами, Date parse

R Programming: Plotting time-series data (using data.frame)

Работа с датами и временем в Microsoft Excel