Подмножество фрейма данных на основе ключа, охватывающего несколько столбцов в другом (итоговом) фрейме данных

У меня есть фрейм данныхa с 4 идентифицирующими столбцами:A, B, C, D, Второй кадр данныхb, созданный сddply(), содержит сводку всех значений для разныхDs для каждого набораA,B,C, Третий кадр данныхc содержит подмножествоb с плохими значениями, которые я хочу удалить изa.

Таким образом, я хочу подмножество изa, пропуская все строки, определенные комбинациейA,B,C которые также присутствуют вc, Я могу придумать способы сделать это (некрасиво и неэффективно) в цикле, но мой опыт работы с DBA побуждает меня искать решение, которое немного более ... прямое.

В коде:

a <- data.frame(
  A=rep(c('2013-10-30', '2014-11-6'), each=16*20),
  B=rep(1:8, each=2*20),
  C=rep(1:4, each=20),
  D=1:20
)

a$Val=rnorm(nrow(a))

library(plyr)
b <- ddply(a, ~B+C+A, summarise,
           mean_Val=mean(Val))

# Some subset criteria based on AOI group values
c <- subset(b, mean_Val <= 0)

# EDIT: Delete all the rows from a for which the
# key-triplets A,B,C are present in c
for (i in 1:nrow(c)) {
  c_row = c[i,]
  a <- a[ which( !(a$A==c_row$A & a$B==c_row$B & a$C==c_row$C) ), ]
}
# This is the loopy type of 'solution' I didn't want to use

Пожалуйста, не стесняйтесь также решать неясности в моем вопросе. Я был бы рад отредактировать, если вы можете указать мне правильное направление.

Ответы на вопрос(1)

Ваш ответ на вопрос