Работает ли что-то подобное (в R)? При этом используется библиотека data.table
, которая отлично подходит для агрегации / группировки следующим образом.
Если вы хотите только уникальные списки устройств, проверьте второй метод:
library(data.table)
dt <- data.table(
Country = c('G', 'G', 'G', 'U', 'U', 'J', 'J', 'G'),
Customer = c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'A'),
Device = c('XYZ', 'ABC', 'ZUI', 'XYZ', 'ABC', 'XYZ', 'ZUI', 'XYZ'),
Level = c(3, 3, 4, 2, 2, 4, 3, 3),
Date = as.Date(c('2020-12-12', '2020-12-08', '2020-12-08', '2020-12-12',
'2020-12-12', '2020-12-12', '2020-11-01', '2020-12-12'))
)
# All devices (duplicates)
dt[ ,
.(Device = paste0(Device, collapse = ';'),
Level = max(Level),
Date = min(Date)),
by = .(Country, Customer)]
# Country Customer Device Level Date
#1: G A XYZ;ABC;ZUI;XYZ 4 2020-12-08
#2: U B XYZ;ABC 2 2020-12-12
#3: J C XYZ;ZUI 4 2020-11-01
# No duplicate devices - Note the use of unique()
dt[ ,
.(Device = paste0(unique(Device), collapse = ';'),
Level = max(Level),
Date = min(Date)),
by = .(Country, Customer)]
# Country Customer Device Level Date
#1: G A XYZ;ABC;ZUI 4 2020-12-08
#2: U B XYZ;ABC 2 2020-12-12
#3: J C XYZ;ZUI 4 2020-11-01