I have a huge data frame, last 30 rows are below:
libary(data.table)
dput(p)
structure(list(DATE = structure(c(1367516015,
The problem is that your ifelse statement returns integer type for some values and numeric (double) for some other entries. And data.table complains about the mismatch in the column type as it expects the coercion to be performed by the user (for performance reasons as given in the error). So, just wrap it around with as.numeric so that all values will be converted to double.
p <- p[,RELATIVE_PERCENT := as.numeric(ifelse(ENT_PCT>100, (USED_CORES/ENT)*100,
USR_SYS_CPU_PCT)), by= c("DATE", "LPAR")]
I did this:
sapply(p, class)
and noticed that one of my columns was integer. Then I did this:
x<-x[,RELATIVE_PERCENT:=ifelse(ENT_PCT>100, ((USED_CORES/ENT)*100), as.numeric(USR_SYS_CPU_PCT)), by= c("DATE", "LPAR")]
and it is money