This code gives unexpected result.
library(data.table) library(lattice) set.seed(123) mydt <- data.table(date = seq.Date(as.IDate("2024-01-01"), by = 1, length.out = 50), xgroup = "A", x = runif(50, 0, 1)) mydt <- rbindlist(list(mydt, data.table(date = mydt$date, xgroup = "B", x = runif(50, 0, 3)))) mydt[, `:=`(xcumsum = cumsum(x)), by = .(xgroup)] mydt[, lapply(.SD, sum), by = .(xgroup), .SDcols = c("x")] # xgroup x # <char> <num> #1: A 26.00455 #2: B 71.55405 #For xgroup = "B", line starts at the sum of all previous x values including xgroup = "A" #Intended result is to separate cumsum(x) for groups "A" and "B" mydt[, xyplot(cumsum(x) ~ date, groups = xgroup, type = c("l", "g"))] mydf <- as.data.frame(mydt) xyplot(cumsum(x) ~ date, groups = xgroup, type = c("l", "g"), data = mydf) #Same graph aggregate(x ~ xgroup, FUN = sum, data = mydf) # xgroup x #1 A 26.00455 #2 B 71.55405 #In graph, group "A" goes up to 26. But group "B" goes up to 26 + 71.55 #I can get intended graph in this way mydt[, xyplot(xcumsum ~ date, groups = xgroup, type = c("l", "g"), auto.key = list(columns = 2, space = "bottom"))] Is this a bug or incorrect use of function? Thanks, Naresh ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.