相关疑难解决方法(0)

使用列表列对data.table进行分组

我有一个非常大的问题,并通过data.table循环来做我想要的太慢,所以我试图绕过循环.假设我有一个data.table如下:

a <- data.table(i = c(1,2,3), j = c(2,2,6), k = list(c("a","b"),c("a","c"),c("b")))

> a
  i j   k
1: 1 2 a,b
2: 2 2 a,c
3: 3 6   b
Run Code Online (Sandbox Code Playgroud)

我想根据k中的值进行分组.所以像这样:

a[, sum(j), by = k]
Run Code Online (Sandbox Code Playgroud)

现在我收到以下错误:

 Error in `[.data.table`(a, , sum(i), by = k) : 
 The items in the 'by' or 'keyby' list are length (2,2,1). Each must be same length as rows in x or number of rows returned by i (3).
Run Code Online (Sandbox Code Playgroud)

我正在寻找的答案是首先将列k中具有"a"的所有行分组,然后计算sum(j),然后计算所有具有"b"的行,依此类推.所以答案是:

k V1 
a 4
b 8 …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
2
解决办法
764
查看次数

标签 统计

data.table ×1

r ×1