使用另一个子集对数据帧的其余部分进行子集

时间:2019-03-20 11:07:41

标签: r dataframe subset

我有一个样本数据集。我使用某种条件创建了原始数据帧的子集。现在,我需要提取原始样本数据帧的其余内容,除了创建的子集。我该怎么办?

data("mtcars")
fulldf <- mtcars
subdf <- subset.data.frame(fulldf, subset = fulldf$disp < 100)
restdf <- subset.data.frame(fulldf, subset = <fulldf without subdf>)

在R中子集数据帧有很多问题,但是找不到满足我要求的问题。 同样,最终解决方案不必一定使用subset.data.frame。任何方法/程序包都可以。

1 个答案:

答案 0 :(得分:1)

最好将base R中的逻辑条件分配给对象标识符,然后取反(!

i1 <- fulldf$disp < 100
subdf <- subset.data.frame(fulldf, subset = i1)
restdf <- subset.data.frame(fulldf, subset = !i1) 

另一个选择是使用list创建两个数据集的split

lst1 <- split(fulldf, i1)

如果要创建的“ subdf”具有多个条件(虽然不清楚),一种选择是在数据中添加一个序列变量,然后使用%in%进行子集

fulldf$ind <- seq_len(nrow(fulldf))

然后在“ subdf”步骤之后

restdf <- subset(fulldf, !ind %in% subdf$ind)

并删除“ ind”列

restdf$ind <- NULL
subdf$ind <- NULL