我有一个数据框,我可以从中创建一个子集。我想从数据帧中减去该子集,然后将数据帧用于其他子集。怎么办呢?
示例:
Col1 Col2 Col3 Col4
Row1
Row2
Row3
Row4
我想要的子集是:
Col1 Col2 Col3 Col4
Row1
Row2
我希望留下
Col1 Col2 Col3 Col4
Row3
Row4
这是一个更大的数据集的示例,实际上我不是在寻找A子集的答案,然后创建另一个不是子集A的子集。有没有办法做dataframe<-dataframe-subset?
之类的事情
答案 0 :(得分:5)
你可以尝试
final_df <- org_df[ !(org_df$ID %in% sub_df$ID), ]
答案 1 :(得分:4)
library(dplyr)
want<-anti_join(org_df,sub_df)
答案 2 :(得分:1)
这是另一种可能的方式:
示例 - &gt;
# Load sqldf library
library(sqldf)
# Create an example Data Frame
A <- data.frame(x=c("LA","NY","DC","SA"),
y=c('a','b','c','d'),
z = c(10,20,30,40),
m = c('A','B','C','D'))
# Here is how Data Frame A looks like
A
x y z m
1 LA a 10 A
2 NY b 20 B
3 DC c 30 C
4 SA d 40 D
# Rows to subtract
rowsToSubset <- c("1","2")
# Just converting rows to subtract as a data frame
rowsToSubsetDF <- data.frame(rowsToSubset)
# Use sqldf to subtract
B <- sqldf("SELECT t.* FROM A t WHERE t.row_names IN (SELECT
rowsToSubset FROM rowsToSubsetDF)",row.names = TRUE)
# Here is how B looks like
B
x y z m
1 LA a 10 A
2 NY b 20 B
# Now perform the second subtraction using sqldf
sqldf("select * from A except select * from B")
x y z m
1 DC c 30 C
2 SA d 40 D