У меня есть data.table, который я хотел бы сделать dcast на основе трех столбцов (V1, V2, V3).однако в V3 есть некоторые дубликаты, и мне нужна агрегатная функция, которая просматривает четвертый столбец V4 и определяет значение V3 на основе максимального значения V4.Я хотел бы сделать это без необходимости отдельно агрегировать DT до dcasting.Можно ли выполнить это агрегирование в функции агрегирования dcast или мне нужно сначала агрегировать таблицу отдельно?
Вот мой data.table DT:
> DT <- data.table(V1 = c('a','a','a','b','b','c')
, V2 = c(1,2,1,1,2,1)
, V3 = c('st', 'cc', 'B', 'st','st','cc')
, V4 = c(0,0,1,0,1,1))
> DT
V1 V2 V3 V4
1: a 1 st 0
2: a 2 cc 0
3: a 1 B 1 ## --> i want this row to be picked in dcast when V1 = a and V2 = 1 because V4 is largest
4: b 1 st 0
5: b 2 st 1
6: c 1 cc 1
и функция dcast может выглядетьчто-то вроде этого:
> dcast(DT
, V1 ~ V2
, value.var = "V3"
#, fun.aggregate = V3[max.which(V4)] ## ?!?!?!??!
)
Мой желаемый вывод:
> desired
V1 1 2
1: a B cc
2: b st st
3: c cc <NA>
Обратите внимание, что объединение DT перед dcasting, чтобы избавиться от дубликатов, решит проблему.Мне просто интересно, можно ли сделать дкастинг с дубликатами.