在 R 中使用 data.table 包对列求和 - 出现 GForce sum(gsum) 错误
Using data.table package in R to sum over columns - getting GForce sum(gsum) error
这里是 data.table:
Date colA colB colC .... month year
01/23/15 2323 2323 2323 january 2015
.......
关于这个 data.table 我正在尝试:
1)按月然后按年对所有列值求和
2)在返回的子集中我想排除日期列
我在DT上设置的按键如下:
setkey(DT, month, year)
现在我运行正在执行此命令以实现上述步骤 1 和 2 中列出的操作:
DT[ ,lapply(.SD, sum, na.rm=TRUE), by=.(month , year), .SDcols= 2:(length(colnames(DT))-2) ]
我从这个 SO post here.
得到了上面的例子
当我 运行 这个.....我得到以下错误:
Error in gsum(`colA`, na.rm = TRUE) :
Type 'character' not supported by GForce sum (gsum). Either add the prefix base::sum(.) or turn off GForce optimization using options(datatable.optimize=1)
我不确定这意味着什么以及如何调试它......
如有任何帮助,我们将不胜感激。
谢谢
错误说你不能对一个字符求和,所以我会说 colA
是一个字符。您可以使用 str(DT)
查看数据中变量的类型。
我创建了一个类似的数据集并使用了您提供的代码,它对我有用:
library(data.table)
DT = data.table("Date" = c('01/23/15', '01/24/15', '02/23/15', '02/24/15'),
"colA" = c(2323, 1212, 1234, 2345),
"colB" = c(2323, 1112, 1134, 2245),
"colC" = c(2323, 1012, 1434, 2445),
"month" = c('january', 'january', 'february', 'february'),
"year" = c(2015, 2015, 2015, 2015)
)
setkey(DT, month, year)
DT[ ,lapply(.SD, sum, na.rm=TRUE), by=.(month , year), .SDcols= 2:(length(colnames(DT))-2) ]
month year colA colB colC
1: february 2015 3579 3379 3879
2: january 2015 3535 3435 3335
这里是 data.table:
Date colA colB colC .... month year
01/23/15 2323 2323 2323 january 2015
.......
关于这个 data.table 我正在尝试: 1)按月然后按年对所有列值求和 2)在返回的子集中我想排除日期列
我在DT上设置的按键如下:
setkey(DT, month, year)
现在我运行正在执行此命令以实现上述步骤 1 和 2 中列出的操作:
DT[ ,lapply(.SD, sum, na.rm=TRUE), by=.(month , year), .SDcols= 2:(length(colnames(DT))-2) ]
我从这个 SO post here.
得到了上面的例子当我 运行 这个.....我得到以下错误:
Error in gsum(`colA`, na.rm = TRUE) :
Type 'character' not supported by GForce sum (gsum). Either add the prefix base::sum(.) or turn off GForce optimization using options(datatable.optimize=1)
我不确定这意味着什么以及如何调试它......
如有任何帮助,我们将不胜感激。 谢谢
错误说你不能对一个字符求和,所以我会说 colA
是一个字符。您可以使用 str(DT)
查看数据中变量的类型。
我创建了一个类似的数据集并使用了您提供的代码,它对我有用:
library(data.table)
DT = data.table("Date" = c('01/23/15', '01/24/15', '02/23/15', '02/24/15'),
"colA" = c(2323, 1212, 1234, 2345),
"colB" = c(2323, 1112, 1134, 2245),
"colC" = c(2323, 1012, 1434, 2445),
"month" = c('january', 'january', 'february', 'february'),
"year" = c(2015, 2015, 2015, 2015)
)
setkey(DT, month, year)
DT[ ,lapply(.SD, sum, na.rm=TRUE), by=.(month , year), .SDcols= 2:(length(colnames(DT))-2) ]
month year colA colB colC
1: february 2015 3579 3379 3879
2: january 2015 3535 3435 3335