Как выбрать участников, которые совершали транзакции в последний день каждого месяца из больших данных - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть данные о членах, которые совершали транзакции каждый день, мне нужен список всех участников, которые совершали транзакции в последний день каждого месяца за весь год.

В моем выводе должен быть список участников (со всеми колонками), которые совершали операции 31 января 2019 года, 28 февраля 2019 года и т. д. до 31 декабря c 2019 года.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Хорошо, здесь довольно неэффективный код (относительно новый для R), но я думаю, что он работает, если вы хотите сделать это только в 2019 году.

#create a manual dataframe with the last days of the months in 2019
LastDays <- structure(list(Date = structure(c(7L, 2L, 10L, 4L, 11L, 5L, 
12L, 13L, 6L, 8L, 3L, 1L, 9L), .Label = c("10-12-2019", "28-2-2019", 
"30-11-2019", "30-4-2019", "30-6-2019", "30-9-2019", "31-1-2019", 
"31-10-2019", "31-12-2019", "31-3-2019", "31-5-2019", "31-7-2019", 
"31-8-2019"), class = "factor")), class = "data.frame", row.names = c(NA, 
-13L))

#remove transactions on other dates in a new dataframe
df_subset <- df[which(df$Date %in% LastDays$Date),]

#find Members which did transactions on all the last days of the month
Members <- df_subset %>% group_by(Member, Date) %>% summarise_all(funs(mean)) %>% select(Member, Date) %>% filter(n() >11)
Members <- unique(Members$Member)

#The information of all the members which transacted on all last dates of the year
df[which(df$Member %in% Members),]
0 голосов
/ 18 февраля 2020
month.ends <- as.Date(paste(unique(year(df$date)), unique(month(df$date)), "01", sep = "-"))-1

df %>% filter(date %in% month.ends)

Если вам нужны только уникальные имена членов с некоторыми другими столбцами, вы можете использовать отличную функцию

...