2016-08-04 3 views
2

Мы можем комбинировать 2 кадра данных с использованием df = rbind(df, another_df). Как это должно быть, если его необходимо удалить another_df от df, где имена розеток df и another_df не подходят.Удалить подмножество записей из фрейма данных в r

df = data.frame(A=c('a','aa','aaa'), B=c('b','bb','bbb')) 
rownames(df) 

another_df =data.frame(A=c('aa','a'), B=c('bb','b')) 
rownames(another_df)=c('3','4') 
+1

Пожалуйста показать воспроизводимый небольшой пример и ожидаемый результат. Я бы посмотрел на '? Setdiff' или' anti_join' из 'dplyr' – akrun

+0

За комментарий выше это может помочь вам сделать хороший пример http://stackoverflow.com/help/mcve –

+0

спасибо akrun, anti_join от dplyr сделал работу :) Я хотел бы принять как ответ, если вы разместите его :) – SaikiHanee

ответ

2

Мы можем использовать anti_join

library(dplyr) 
anti_join(df, another_df) 

Или, если это основано на rownames, то %in% может быть использован для создания логического индекса подмножество строк

df[!row.names(df) %in% row.names(another_df),] 
0

Вы можете сделать это без использования каких-либо пакетов с помощью setdiff.

df = data.frame(A=c('a','aa','aaa'), B=c('b','bb','bbb')) 
another_df =data.frame(A=c('aa','a'), B=c('bb','b')) 
s <- df[setdiff(rownames(df),rownames(another_df)),] 

s - выход, который вы хотите.

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