2015-02-18 6 views
-5

У меня есть кадр данных dfВыбор и удаление строк в г

pw pl 
30 40 
32 39 
29 38 
32 41 
31 39 
28 42 
31 42 

и подмножество df под названием subset

pw pl 
29 38 
32 41 
31 39 

и я хочу, чтобы удалить все строки в df, которая существует в subset так что df выглядит следующим образом

pw pl 
30 40 
32 39 
28 42 
31 42 

Как это сделать?

+2

Вы должны, по крайней мере, предоставить некоторые воспроизводимые данные. – cdeterman

+2

Проверьте, например. 'Setdiff'. – lukeA

+0

Я отредактировал текст, чтобы включить воспроизводимые данные, поэтому вопрос намного яснее. – pimmen

ответ

1

Если subset действительно является подмножеством df, и никакие дополнительные строки не были опущены или добавлены в df, фильтр с использованием имен строк будет работать.

xy <- data.frame(sub = rep(letters[1:3], 9), val = runif(9)) 
xy.sub <- xy[xy$sub %in% "b", ] 

xy[!rownames(xy) %in% rownames(xy.sub), ] 

Чтобы соответствовать несколько столбцов, вы можете сделать

xy[!(xy$val %in% xy.sub$val & xy$sub %in% xy.sub$sub), ] #notice the braces 
+0

Спасибо! Это решило проблему! – pimmen

Смежные вопросы