查找数据帧的补码(反连接)

查找数据帧的补码(反连接)

我有两个数据帧(df和df 1)。df 1是df的子集。我想要一个数据帧,它是df1在df中的补充,即返回在第二个数据集中不匹配的第一个数据集的行。例如,让

数据帧DF:

heads
row1
row2
row3
row4
row5

数据帧df1:

heads
row3
row5

然后,所需的输出df 2是:

heads
row1
row2
row4


大话西游666
浏览 467回答 3
3回答

德玛西亚99

您也可以使用data.tables二进制连接library(data.table)setkey(setDT(df), heads)[!df1]#    heads# 1:  row1# 2:  row2# 3:  row4编辑:起始数据表v1.9.6+我们可以在不设置键的情况下连接data.tableonsetDT(df)[!df1, on = "heads"]EDIT 2:起始数据表v1.9.8+ fsetdiff介绍,它基本上是上述解决方案的一个变体,仅在x数据表,例如x[!y, on = names(x)]..如果all设为FALSE(默认行为),则只在x会被归还。对于每个数据表中只有一列的情况,以下内容将与前面的解决方案等效fsetdiff(df, df1, all = TRUE)

月关宝盒

试试看%in%命令并使用!df[!df$heads %in% df1$heads,]
打开App,查看更多内容
随时随地看视频慕课网APP