2012-02-07 114 views
2

我有2個數據集。一個是父數據集(A),另一個是其子集(B)。我想創建一個數據集從一個不包含從B.它應該是這樣的減去兩個數據集

行C = A-B

兩個數據集A和B具有相同的列數和列名的。

+0

重複? http://stackoverflow.com/questions/7474735/take-subset-of-dataset-based-on-another-dataset – 2012-02-07 07:38:51

回答

0

像下面可能做的伎倆:

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

如果你不想把它轉換成字符串比較,即是否完全匹配 你可以試試這個

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)}))}),] 
8

如果B是A的實際subset,則可以使用setdiffrownames

sset <- subset(mtcars,cyl==4) 
mtcars[setdiff(rownames(mtcars),rownames(sset)),] 
+0

+1不錯的一個。我總是忘記設置操作.. – jbaums 2012-02-07 07:39:21

+0

非常好。請注意,這是可行的,因爲不允許重複的行名稱(即使您在創建數據框時設置了「check.names = FALSE」)。 – 2012-02-07 10:43:18