r - 如何在 R 中的 data.table 中按两个条件选择行

标签 r select subset data.table

假设我有一个 data.table,我想选择变量 x 值为 b 的所有行。那很容易

library(data.table)
DT <- data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x)               # set a 1-column key
DT["b"]

顺便说一句,似乎必须设置一个键,如果键未设置为 x 则这不起作用。顺便说一下,如果我将两列设置为键会发生什么?

无论如何,继续前进,假设我想选择变量 x 为 a 或 b 的所有行
DT["b"|"a"]

不起作用

但以下作品
DT[x=="a"|x=="b"]

但这使用矢量扫描 la 数据帧。它不使用二进制搜索。我想对于较小的数据集,这无关紧要。

这是我应该做的还是我对 data.table 语法一无所知?

还有一件事情。是否有使用 data.table 的更复杂的 bool 多变量选择(或子集)过程的示例?

我知道我总是可以恢复使用 subset() 函数,因为如果必须,data.table 将表现为 data.frame。

最佳答案

这是我提出问题后才想到的一种方法,它有效,但我不知道它在基准测试中的表现如何。我目前不在一台安装了 R 的计算机上。我想我应该使用云实例。无论如何,我喜欢语法

DT[c("a","b")]

关于r - 如何在 R 中的 data.table 中按两个条件选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509595/

相关文章:

读取/导入 .tpk 映射到 R 或 QGIS 并用作 shapefile

mysql - 选择加起来等于一个数的记录

Python:如果当前元素小于前一个元素,则在子集中拆分列表

r - 基于多个函数参数的子集

arrays - 在 Fortran 中,传递 myArray 或 myArray( :) to a function?

regex - 提取特定字符串后的数字

r - 如何在R中的弹性包中使用index_create()为数据建立索引

r - 如何在同一窗口中打印三个维恩图

html - 如何更改选择框中特定选项的样式?

MySQL:在第 1 列或第 2 列中选择 3 个最常出现的字符串