2 |-6ren">
gpt4 book ai didi

r - 按级别过滤但保留其他级别

转载 作者:行者123 更新时间:2023-12-02 08:00:49 25 4
gpt4 key购买 nike

我想按级别过滤,即级别 D>2 和 B>7,但将其他级别保留在数据框中。如何使用 dplyr 实现这一点?

这是一个最小的例子。

df <- data.frame(x = c("A","A","A","B","B","B","C","C","D","D","D"),
y = c(10,1,5,2,7,9,8,3,2,3,5) )

我尝试了以下方法,但这不是我想要的。

df %>% 
dplyr::filter(x=="D" & y>2 | x=="B" & y>7)

我希望输出是:

 x  y
A 10
A 1
A 5
B 9
C 8
C 3
D 3
D 5

最佳答案

您可以分别过滤“B”“D”级别并绑定(bind)行。

library(dplyr)
bind_rows(df %>% filter(!x %in% c("B", "D")),
df %>% filter(x =="D" & y>2 | x=="B" & y>7))


# x y
#1 A 10
#2 A 1
#3 A 5
#4 C 8
#5 C 3
#6 B 9
#7 D 3
#8 D 5

在基础 R 中,这将是

rbind(subset(df, !x %in% c("B", "D")), subset(df, x=="D" & y>2 | x=="B" & y>7))

关于r - 按级别过滤但保留其他级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608561/

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