data.table 中使用点表示法的子集

Subsetting in data.table using dot notation

提问人:Alex 提问时间:7/11/2016 最后编辑:Alex 更新时间:7/11/2016 访问量:711

问:

我正在尝试学习,但立即被提议的子集弄得一团糟。我正在使用以下示例数据处理其中一个 cran 小插图 (https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.pdf):data.table

grpsize = ceiling(1e7/26^2) 
DF <- data.frame(
   x=rep(LETTERS,each=26*grpsize),
   y=rep(letters,each=grpsize),
   v=runif(grpsize*26^2),
   stringsAsFactors=FALSE)

setDT(DF)

如果我希望满足以下条件,那么子集此数据集的最佳方法是什么:和 ?x = "B"y = "c"v > 0

小插曲为前两个条件提出了以下建议:

setkey(DF, x, y)    
DF[.("B","c")]

我明白这实际上是在做一个加入。 但是我怎样才能添加第三个条件呢?我很清楚这样一个事实,我可以像用正常人一样做整件事。但引用小插曲:data.frame

我们也可以在 data.table 中进行矢量扫描。换句话说,我们可以使用 data.table 很糟糕。

r data.table 数据操作

评论

1赞 akrun 7/11/2016
你不能分两步使用它吗?DF[.("B","c")][v > 0]DF[DF[.("B","c"), .I[v > 0] ,by = .EACHI]$V1]
0赞 Frank 7/11/2016
链接的常见问题解答似乎不包含该引用。
0赞 Alex 7/11/2016
@Frank:对不起,这是错误的链接。我编辑了这个问题。
1赞 Frank 7/11/2016
好的,仅供参考,最新的小插曲可在项目网站上以 html 形式获得:github.com/Rdatatable/data.table/wiki/Getting-started
0赞 Alex 7/11/2016
@akrun:在阅读了教程后,Frank 认为我认为“链接”(或我们所说的 2 步)将是首选解决方案。如果您想将其作为解决方案发布,我会接受它。但是,在阅读了新的小插曲后,我不确定这种子集是否有意义,因为我在那里找不到它。有谁知道为什么它应该出现在旧的小插曲中?

答: 暂无答案