Подмножество data.table по условию, но сохраняются все строки, принадлежащие группе - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть данные, которые выглядят следующим образом:

require("data.table")
dt1 <- data.table(
  code=c("A001", "A001","A001","A002","A002","A002","A002","A003","A003"),
  value=c(40,38,55,10,12,16,18,77,87))

Я хотел бы установить это подмножество, чтобы любая группа (code), которая содержит значение выше или ниже заданного числа, была сохранена.Например, если бы я хотел любую группу, которая содержала бы значение больше 50, то результат был бы похож на это:

dt2 <- data.table(
  code=c("A001", "A001","A001","A003","A003"),
  value=c(40,38,55,77,87))

1 Ответ

0 голосов
/ 19 февраля 2019

Мы создаем условие с any после группировки по 'коду' для подмножества строк

dt1[, if(any(value > 50)) .SD,  code]

Или без условия if

dt1[,  .SD[any(value > 50)],  code]

Или получаем строкуиндексы (.I) и подмножество на основе этого

dt1[dt1[,  .I[any(value > 50)],  code]$V1]
...