Вычитание двух наборов данных - PullRequest
2 голосов
/ 07 февраля 2012

У меня есть 2 набора данных. Один - это родительский набор данных (A), а другой - его подмножество (B). Я хочу создать набор данных из A, который не содержит строк из B. Это должно быть что-то вроде

С = А-В

Оба набора данных A и B имеют одинаковое количество столбцов и имен столбцов.

Ответы [ 3 ]

8 голосов
/ 07 февраля 2012

Если B является действительным subset из A, вы можете использовать setdiff для rownames:

sset <- subset(mtcars,cyl==4)
mtcars[setdiff(rownames(mtcars),rownames(sset)),]
1 голос
/ 07 февраля 2012

Если вы не хотите преобразовывать его в строку для сравнения, т.е. делать точные совпадения, вы можете попробовать это

a <- data.frame(t(matrix(1:12,3,4)))
b <- data.frame(t(matrix(7:21,3,5)))
a[!apply(a,1,FUN=function(y){any(apply(b,1,FUN=function(x){all(x==y)}))}),]
0 голосов
/ 07 февраля 2012

Что-то вроде следующего может помочь:

C <- A[!(apply(A, 1, toString) %in% apply(B, 1, toString)), ]
...