Я пытаюсь создать в моем наборе данных новые переменные, которые представляют собой кумулятивные итоги, которые перезапускаются на основе других переменных (используя group by)… Я хочу, чтобы это были новые столбцы в наборе данных, и это та часть, с которой я борюсь...
Используя приведенные ниже данные, я хочу создать накопительные столбцы Sale и Profit, которые будут перезапускаться для каждой группы Product и Product_Cat.
Приведенный ниже код частично дает мне то, что мне нужно, нопеременные не являются новыми переменными, а перезаписывают существующие продажи / прибыль ... что я делаю не так?Я полагаю, это просто, я ничего не нашел.
Примечание: я использую lapply, поскольку мой реальный набор данных содержит более 40 переменных, для которых мне нужно создать вычисления.
DT <- setDT(Data)[,lapply(.SD, cumsum), by = .(Product,Product_Cat) ]
Данные для примера:
Product <- c('A','A','A','B','B','B','C','C','C')
Product_Cat <- c('S1','S1','S2','C1','C1','C1','D1','E1','F1')
Sale <- c(10,15,5,20,15,10,5,5,5)
Profit <- c(2,4,2,6,8,2,4,6,8)
Sale_Cum <- c(10,25,5,20,35,45,5,5,5)
Profit_Cum <- c(2,6,2,6,14,16,4,6,8)
Data <- data.frame(Product,Product_Cat,Sale,Profit)
Desired_Data <- data.frame(Product,Product_Cat,Sale,Profit,Sale_Cum,Profit_Cum)