数据表:与j一起使用的方括号

时间:2019-05-23 15:09:18

标签: r data.table

因此,我正在尝试学习data.table,并在link在线备忘单中使用了.SD的符号。因此,该示例使用带有.SD的方括号来对行进行子集化。但是,为什么不只是i的子集行呢?因此.SD[c(1, .N)]可以对行进行子集设置吗?我为什么要像这样子集行?

    library(data.table)

    DT <- data.table(A = letters[c(1, 1, 1, 2, 2)], 
                     B = 1:5, 
                     C = 6:10)

    DT
    #>    A B  C
    #> 1: a 1  6
    #> 2: a 2  7
    #> 3: a 3  8
    #> 4: b 4  9
    #> 5: b 5 10

 # Method 1   
    DT[, .SD[c(1, .N)], by = A]
    #>    A B  C
    #> 1: a 1  6
    #> 2: a 3  8
    #> 3: b 4  9
    #> 4: b 5 10

# method 2
    DT[c(1, .N), .SD, by = A]
    #>    A B  C
    #> 1: a 1  6
    #> 2: b 5 10

1 个答案:

答案 0 :(得分:3)

在第二种情况下,我们用索引指定i,其中.N是最后一行,在第一种情况下,它是每个组的最后一行

DT[c(1, .N)]

类似于

DT[c(1, .N), .SD, by = A]

唯一的区别是i中指定的行将用于处理/更改分组信息by'A'