Оптимизация - Как максимизировать количество движущихся клиентов в R - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть список клиентов, которые будут перемещаться между тремя группами, скажем, a, b и c.У каждого клиента свой доход.Теперь, хотя я хочу максимизировать количество клиентов, которым нужно переехать, я хочу, чтобы изменение выручки для каждой группы оставалось в определенных пределах, скажем, от -3 до 3. Мне нужно подумать об изменении чистой выручки, поскольку изменение выручки группы будетколебаться, когда клиенты входят и выходят из этой группы.В приведенном примере:

customer <- c("customer1", "customer2","customer3","customer4","customer5","customer6","customer7","customer8","customer9")

revenue <- c(5,6,7,2,3,4,5,1,2)

old_group <- c("a","b","c","a","b","c","a","b","c")

new_group <- c("b","c","a","c","a","b","b","a","a")

change <- c("Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes")

df <- data.frame(customer, revenue, old_group, new_group, change)

library(dplyr)

incomingRev_a <- df %>% filter(change=="Yes" & new_group=="a") %>% summarise(rev=sum(revenue))

incomingRev_b <- df %>% filter(change=="Yes" & new_group=="b") %>% summarise(rev=sum(revenue))

incomingRev_c <- df %>% filter(change=="Yes" & new_group=="c") %>% summarise(rev=sum(revenue))


outgoingRev_a <- df %>% filter(change=="Yes" & old_group=="a") %>% summarise(rev=sum(revenue))

outgoingRev_b <- df %>% filter(change=="Yes" & old_group=="b") %>% summarise(rev=sum(revenue))

outgoingRev_c <- df %>% filter(change=="Yes" & old_group=="c") %>% summarise(rev=sum(revenue))


netRev_a <- incomingRev_a - outgoingRev_a

netRev_b <- incomingRev_b - outgoingRev_b

netRev_c <- incomingRev_c - outgoingRev_c

В настоящее время значения netRev_b и netRev_c равны 4 и -5 соответственно, поэтому для некоторых значений «Да» в столбце «Изменение» должно быть указано «Нет», и мне нужно знать, какой сценарий будетдайте мне максимальное количество клиентов, перемещающихся.Это очень упрощенная иллюстрация, но мои реальные данные имеют сотни тысяч клиентов.Можно ли это сделать в R?

...