【发布时间】:2015-01-05 18:10:19
【问题描述】:
这是取自 a fellow SO member 的示例。
# define a %not% to be the opposite of %in%
library(dplyr)
# data
f <- c("a","a","a","b","b","c")
s <- c("fall","spring","other", "fall", "other", "other")
v <- c(3,5,1,4,5,2)
(dat0 <- data.frame(f, s, v))
# f s v
#1 a fall 3
#2 a spring 5
#3 a other 1
#4 b fall 4
#5 b other 5
#6 c other 2
(sp.tmp <- filter(dat0, s == "spring"))
# f s v
#1 a spring 5
(str(sp.tmp))
#'data.frame': 1 obs. of 3 variables:
# $ f: Factor w/ 3 levels "a","b","c": 1
# $ s: Factor w/ 3 levels "fall","other",..: 3
# $ v: num 5
filter() 产生的 df 保留了 所有原始 df 的级别。
在dplyr 框架内删除未使用级别(即"fall" 和"others")的推荐方法是什么?
【问题讨论】:
-
我一直在使用电子表格进行数据预处理,但是自从我发现
dplyr之后,这似乎已经改变了 ;-) 但是,当在电子表格中应用过滤器时,“隐藏" 对于复制/粘贴操作,范围似乎不存在。这就是为什么我在应用filter()后发现过滤后的内容部分转移到了新的df 时感到惊讶的原因。因此,我询问如何在dplyr框架内在 内获得相同的效果,并期望可能会有这样的论点。 -
现在可以完全删除这个问题吗?
-
如果它会整理环境,我会很乐意这样做。希望两位助手都不会介意否决...
-
我想他们会...
-
保持原样。答案显示了
dplyr上的一些额外实现