use*_*868 11 inequality r subset data.table
我想使用data.table包基于多个不等式条件对我的数据进行子集化.data.table手册中的示例显示了如何使用字符变量执行此操作,但不使用数字不等式.我还看到如何使用子集函数执行此操作.但我真的想利用data.table二进制搜索速度.以下是我想要做的一个例子.
library(data.table)
data <- data.table(X=seq(-5,5,1), Y=seq(-5,5,1), Z=seq(-5,5,1))
data
setkey(data, X, Y, Z)
#the data.frame way
data[X > 0 & Y > 0 & Z > 0]
#the data.table way (does not work as I expected)
data[J(>0, >0, >0)]
Run Code Online (Sandbox Code Playgroud)
使用 dplyr 包,该解决方案非常快速且简单。
install.packages(dplyr)
library(dplyr)
newdata <- filter(data, X > 0 , Y > 0 , Z > 0)
Run Code Online (Sandbox Code Playgroud)
dplyr 被证明是管理数据帧最简单、最快的软件包之一。在这里查看这个很棒的教程:http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
RStudio 团队还制作了一份不错的备忘单,此处:http ://www.rstudio.com/resources/cheatsheets/