Есть ли хороший способ создать подгруппу в столбце группировки в операциях data.table
?
Результат, который я хотел бы, - это вывод из этого:
dt <- data.table(
group = c("a","a","a","b","b","b","c","c"),
value = c(1,2,3,4,5,6,7,8)
)
dt[group!="a", group:="Other"][, sum(value), by=.(group)][]
который дает
group V1
a 6
Other 30
Однако это изменяет исходный data.table
. Я не знаю, есть ли другой способ сделать это, который не включал бы слияние двух data.table
. Я могу представить себе более сложный вариант использования, когда я хочу group %in% c("a","b")
в качестве одной подгруппы и group %in% c("c","d")
в другой и т. д.
mDT = data.table(g = c(1,1,2,2), group=letters[1:4]); dt[, sum(value), by=mDT[dt, on=.(group), x.g]]
- person Frank   schedule 27.09.2018