Как выбрать строки по двум критериям в data.table в R

Скажем, у меня есть таблица 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"]

Но здесь используется векторное сканирование а-ля фреймы данных. Он не использует двоичный поиск. Думаю, для меньших наборов данных это не имеет значения.

Это что, что мне делать, или я не знаю синтаксиса data.table?

И еще кое-что. Есть ли какие-нибудь примеры более сложных булевых процедур выбора (или подмножества) с несколькими переменными с data.table?

Я знаю, что всегда можно вернуться к использованию функции subset (), поскольку таблица data.table будет вести себя как data.frame, если это необходимо.

26
задан Farrel 14 December 2011 в 18:16
поделиться