我有一个样本数据集。我使用某种条件创建了原始数据帧的子集。现在,我需要提取原始样本数据帧的其余内容,除了创建的子集。我该怎么办?
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
。任何方法/程序包都可以。
答案 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