data.table 所有列的总和(按组)
data.table sum of all colums by group
我有一个由 515 个整数列和 2 643 246 行组成的数据框,我想从中对未知数量的列进行子集化,并将数据聚合到一个显示总和的列,由两个组列组成。
为了完成第一部分,我使用了 data.table 中的 selection 函数,
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE]
其中 Kattegori_Henter
是一个函数,它返回我想要 select 来自不同数据集的列的名称。从这个 selection 我想做聚合。
我在 data.table 中尝试了几种不同的解决方案来执行此聚合,但没有得到结果。鉴于 intro-data.table 小插图,我认为解决方案是添加
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE, lapply(.SD,sum, na.rm =
TRUE), by = c(id, year)]
然而,这个returns错误Provide either by= or keyby= but not both
,我不明白它的意思,并且没有google给出任何好的结果。
然后我尝试了:
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE, a := sum(1.ncol), by = c(id, year)]
除了返回子集数据帧外,没有任何结果。
这样做的原因是我想在 kattegori_henter
函数上使用 lapply,将 525 列聚合到一组类别中。
在此先感谢您的帮助!
编辑:
已尝试
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with =
FALSE][, lapply(.SD, sum, na.rm = TRUE), by = c("id", "year")]
如评论中所述。结果与上面的第二个代码相同,返回未更改的数据帧。
编辑 2:
从问题中删除了这个,因为对它的评论没有产生想要的结果:
",这将等于 tidyverse-code:
Test2 %>%
group_by(id, year) %>%
summarise(a = sum(1:ncol(.), na.rm = TRUE)) "
我认为您要查找的代码可能是:
TestData[, .(a = sum(.SD)), by = .(id, year), .SDcols = Kattegori_Henter("Medicine")]
我有一个由 515 个整数列和 2 643 246 行组成的数据框,我想从中对未知数量的列进行子集化,并将数据聚合到一个显示总和的列,由两个组列组成。
为了完成第一部分,我使用了 data.table 中的 selection 函数,
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE]
其中 Kattegori_Henter
是一个函数,它返回我想要 select 来自不同数据集的列的名称。从这个 selection 我想做聚合。
我在 data.table 中尝试了几种不同的解决方案来执行此聚合,但没有得到结果。鉴于 intro-data.table 小插图,我认为解决方案是添加
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE, lapply(.SD,sum, na.rm =
TRUE), by = c(id, year)]
然而,这个returns错误Provide either by= or keyby= but not both
,我不明白它的意思,并且没有google给出任何好的结果。
然后我尝试了:
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with = FALSE, a := sum(1.ncol), by = c(id, year)]
除了返回子集数据帧外,没有任何结果。
这样做的原因是我想在 kattegori_henter
函数上使用 lapply,将 525 列聚合到一组类别中。
在此先感谢您的帮助!
编辑:
已尝试
TestData[,c(Kattegori_Henter("Medicine"), "id", "year"), with =
FALSE][, lapply(.SD, sum, na.rm = TRUE), by = c("id", "year")]
如评论中所述。结果与上面的第二个代码相同,返回未更改的数据帧。
编辑 2:
从问题中删除了这个,因为对它的评论没有产生想要的结果: ",这将等于 tidyverse-code:
Test2 %>%
group_by(id, year) %>%
summarise(a = sum(1:ncol(.), na.rm = TRUE)) "
我认为您要查找的代码可能是:
TestData[, .(a = sum(.SD)), by = .(id, year), .SDcols = Kattegori_Henter("Medicine")]