从r中的数据框中删除记录的子集

时间:2016-08-04 05:53:53

标签: r dataframe

我们可以使用df = rbind(df, another_df)合并2个数据帧。如果需要从another_df df移除df,而another_dfdf = 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') 的rownames不匹配,那该怎么办呢?

function insertInDatabaseRx(data) {
    return Rx.Observable.create(function (observer) {
           db.insert(data, function (err) {
               if (err) {
                  observer.onError(err);
               } else {
                  observer.onCompleted();
               }
           });
    });
}

2 个答案:

答案 0 :(得分:2)

我们可以使用anti_join

library(dplyr)
anti_join(df, another_df)

或者,如果这是基于rownames,那么%in%可用于创建逻辑索引以对行进行子集

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

答案 1 :(得分: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是您想要的输出。