gpt4 book ai didi

R:使用 "is not equal"运算符 dplyr/subset 按两​​列过滤

转载 作者:行者123 更新时间:2023-12-04 11:41:54 27 4
gpt4 key购买 nike

这个问题以前肯定已经回答过,但我在任何地方都找不到。我需要使用两列中的值过滤/子集数据框以删除它们。在示例中,我想保留所有不相等 (!=) 的行以同时复制“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 treatment
2 2 a
3 3 a
5 2 a
6 3 a
7 1 b
8 2 b
9 3 b
10 1 b
11 2 b
12 3 b

最佳答案

我认为您希望在这里使用“或”条件。这看起来如何:

require(dplyr)

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

df = data.frame(replicate, treatment)
df %>%
filter(replicate != 1 | treatment != "a")

replicate treatment
1 2 a
2 3 a
3 2 a
4 3 a
5 1 b
6 2 b
7 3 b
8 1 b
9 2 b
10 3 b

关于R:使用 "is not equal"运算符 dplyr/subset 按两​​列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47191727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com