如何解决.SD 在 R 中的 data.table 中代表什么
.SD
代表“ S
ata.table 的D
ubset”之类的东西。初始 没有任何意义"."
,只是它更不可能与用户定义的列名发生冲突。
如果这是您的 data.table:
DT = data.table(x=rep(c("a","b","c"),each=2), y=c(1,3), v=1:6)
setkey(DT, y)
DT
# x y v
# 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>
# x v
# 1: a 1
# 2: b 3
# 3: c 5
# <2nd sub-data.table, ALSO called '.SD' while it's being operated on>
# x v
# 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
并依次对它们进行操作。
当它在任何一个上运行时,它允许您data.table
通过使用 nick-name/handle/symbol
来引用当前子项.SD
。这非常方便,因为您可以访问和操作列,就像您坐在命令行上使用名为.SD
… 的单个 data.table
一样,除了这里,data.table
将对每个子data.table
定义的子执行这些操作键的组合,将它们“粘贴”在一起并将结果返回一个data.table
!
解决方法
.SD
看起来很有用,但我真的不知道我在用它做什么。它代表什么?为什么会有前一段(句号)。当我使用它时会发生什么?
我读到: .SD
是一个data.table
包含x
每个组的数据子集,不包括组列。可用于分组i
时、分组时by
、键控by
和 _ad
hocby
_
这是否意味着女儿data.table
s 被保存在内存中以供下一次操作使用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。