小编Mir*_*cic的帖子

R:使用“不等于”运算符 dplyr/subset 按两​​列过滤

这个问题以前肯定已经回答过,但我在任何地方都找不到。我需要使用两列中的值过滤/子集数据框以删除它们。在示例中,我想保留所有不相等 (!=) 的行以同时复制“1”和处理“a”。但是,子集和过滤器函数删除所有重复 1 和所有处理 a。我可以通过使用 which 然后索引来解决它,但这不是使用管道运算符的最佳方法。你知道为什么过滤器/子集只有在两个条件都为真时才过滤吗?

require(dplyr)

#Create example dataframe
replicate = rep(c(1:3), times = 4)
treatment = rep(c("a","b"), each = 6)

df = data.frame(replicate, treatment)

#filtering data    
> filter(df, replicate!=1, treatment!="a")
  replicate treatment
1         2         b
2         3         b
3         2         b
4         3         b
> subset(df, (replicate!=1 & treatment!="a"))
   replicate treatment
8          2         b
9          3         b
11         2         b
12         3         b

#solution by which - indexing
index = which(df$replicate==1 & df$treatment=="a")
> df[-index,]
   replicate …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
7万
查看次数

标签 统计

dplyr ×1

r ×1