R - количество транзакций, выполненных каждым идентификатором электронной почты в течение 1 часа - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующий набор данных:

id  email   Date of purchase    time of purchase
1   abc@gmail.com   11/10/18    12:10 PM
2   abc@gmail.com   11/10/18    12:11 PM
3   abc@gmail.com   11/10/18    12:14 PM
4   abc@gmail.com   11/10/18    1:16 AM
5   abc@gmail.com   11/10/18    2:10 AM
6   def@gmail.com   11/10/18    12:17 PM
7   def@gmail.com   11/10/18    12:24 PM
8   def@gmail.com   11/10/18    1:16 PM
9   ghi@gmail.com   11/10/18    12:10 PM
10  ghi@gmail.com   11/10/18    1:41 PM
11  ghi@gmail.com   11/11/18    1:44 PM
12  ghi@gmail.com   11/11/18    1:56 PM
13  ghi@gmail.com   11/11/18    2:30 AM
14  ghi@gmail.com   11/11/18    2:37 AM

Я хочу рассчитать количество транзакций, выполненных каждым идентификатором электронной почты в течение 1 часа.Например, идентификаторы электронной почты: abc@gmail.com совершили 3 транзакции, начиная с 10.10.18 до 12.10.18 и 13.10, и осуществили 2 транзакции, начиная с 11.10.18, с 13.06 до 11.10.18.2.16 вечера.

Мой желаемый вывод:

email   purchase in 1 hour
abc@gmail.com   3
abc@gmail.com   2
def@gmail.com   3
ghi@gmail.com   1
ghi@gmail.com   1
ghi@gmail.com   2
ghi@gmail.com   2

Я не знаю, как начать делать это в R. В моем наборе данных 700 000 строк.Любая помощь будет высоко оценена.Благодарю.:)

1 Ответ

0 голосов
/ 23 ноября 2018

Мы можем использовать round_date от lubridate для округления до 'часа' и использовать его как переменную группировки для получения количества строк

library(tidyverse)
df1 %>% 
   mutate(dateNew = mdy_hm(paste(Dateofpurchase, timeofpurchase))) %>% 
   group_by( hourly = round_date(dateNew, 'hour'), email) %>% 
   summarise(purchaseIn1hour = n())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...