df <- data.frame(code = rep(1:10, each = 3 * 3),
type = rep(c("a", "b", "c"), each = 10 * 3),
year = rep(1980:1982, each = 10 * 3),
x = rnorm(90))
df <- df %>% dplyr::arrange(code, year, type)
我要删除其中type == a
和code
为1、3或4的CODE的所有行。
exclude.code <- c(1, 3, 4)
new.df <- df %>% dplyr::filter(!code %in% exclude.code & type != "a")
但这将删除所有不等于a
的类型,即使我只想删除代码为1、3或4的那些a
。我在做什么错呢?
编辑
我在评论中尝试了该方法,但仍然没有效果
head(df %>% dplyr::filter((!code %in% exclude.code) & type != "a"))
code type year x
5 b 1981 -1.0564839
5 b 1981 1.5385139
5 b 1981 0.5709470
5 b 1981 0.4728047
5 b 1981 -0.3739578
5 b 1981 0.6338270
答案 0 :(得分:3)
只需使用此:
df %>% dplyr::filter( !((code %in% exclude.code) & (type == "a")) )
这个
(code %in% exclude.code) & (type == "a")
为您提供了您不想要的东西。
然后在整个内容上应用!
以“删除”它们。