R在data.table中代表什么?
.SD
看起来很有用,但我真的不知道我在做什么。 它代表什么? 为什么有一个前期(句号)。 当我使用它时发生了什么?
我读到: .SD
是一个data.table
其中包含每个组的x
数据的子集,不包括组列。 它可以用于分组时, i
分组时,键入和_ad hoc_ by
这是否意味着女儿的data.table
被保存在内存中以便下一次操作?
.SD
代表“ D
ata.table”。 这对最初的"."
没有意义"."
,除了使用户定义的列名冲突更不可能。
如果这是你的data.table:
DT = data.table(x=rep(c("a","b","c"),each=2), y=c(1,3), v=1:6) setkey(DT, y) DT # xyv # 1: a 1 1 # 2: b 1 3 # 3: c 1 5 # 4: a 3 2 # 5: b 3 4 # 6: c 3 6
这样做可以帮助你看到什么.SD
是:
DT[ , .SD[ , paste(x, v, sep="", collapse="_")], by=y] # y V1 # 1: 1 a1_b3_c5 # 2: 3 a2_b4_c6
基本上, by=y
语句将原始data.table分解成这两个子数据data.tables
DT[ , print(.SD), by=y] # <1st sub-data.table, called '.SD' while it's being operated on> # xv # 1: a 1 # 2: b 3 # 3: c 5 # <2nd sub-data.table, ALSO called '.SD' while it's being operated on> # xv # 1: a 2 # 2: b 4 # 3: c 6 # <final output, since print() doesn't return anything> # Empty data.table (0 rows) of 1 col: y
并依次对其进行操作。
当它在任一个上运行时,它可以让你使用nick-name / handle / symbol .SD
引用当前的子.SD
。 这是非常方便的,因为您可以访问和操作列,就像您坐在命令行中一样使用一个名为.SD
…除了在这里data.table
将执行这些操作单个子data.table
由键的组合定义,“粘贴”到一起,并返回结果在一个单一的data.table
!