如何在data.table分组中为每个组传递不同的参数?

use*_*375 6 r data.table

例:

这是一个名为的数据表dt:

> library(data.table)
> dt <- data.table(colA=rep(letters[1:3],each=3), colB=0:8)
> dt
   colA colB
1:    a    0
2:    a    1
3:    a    2
4:    b    3
5:    b    4
6:    b    5
7:    c    6
8:    c    7
9:    c    8
Run Code Online (Sandbox Code Playgroud)

我想知道:

对于colA等于"a",是否有colB> 2的值?

对于colA等于"b",是否有colB> 3的值?

对于colA等于"c",是否有colB> 4的值?

我创建了一个向量,arg用于保存组"a","b"和"c"的参数:

arg < - c(2,3,4)

谁能给我一个简单的方式传递arg到分组dtcolA

这是我想要的结果:

     colA    V1
  1:    a FALSE
  2:    b  TRUE
  3:    c  TRUE
Run Code Online (Sandbox Code Playgroud)

这是我在这里的第一个问题,我试图让它变得简单.先感谢您.

Jos*_*ien 9

对于它所操作的每个子组,[.data.table()将有关分组变量的当前值的信息存储在名为的变量中.BY.

如果您首先设置一个命名向量,将分组变量的级别映射到所需的参数值,您可以使用.BY它来索引,提取适当的值,如下所示:

arg <- setNames(c(2, 3, 4), c("a", "b", "c"))
arg
# a b c 
# 2 3 4

dt[, any(colB > arg[unlist(.BY)]), by="colA"]
#    colA    V1
# 1:    a FALSE
# 2:    b  TRUE
# 3:    c  TRUE
Run Code Online (Sandbox Code Playgroud)