% group_by(group) %>% su-6ren">
gpt4 book ai didi

r - dplyr 条件过滤组

转载 作者:行者123 更新时间:2023-12-02 18:04:09 25 4
gpt4 key购买 nike

我有一个有点像这样的数据集:

df <- tibble(group = c(1,1,1,2,2,3,3),
type = c("HOME", "MAIL", "HOME", "HOME", "HOME",
"MAIL", "MAIL"),
count = c(3,4,4,3,3,2,2))

在我的dplyr管道中,我想做一个条件过滤器,这样对于每个组,如果有任何type ==“HOME”,它将过滤从该组中取出任何 TYPE == "MAIL",如果没有“HOME”,则保留“MAIL”。最终我总结了计数,并希望其输出为组 1 = 7,组 2 = 6,组 3 = 4。

如有任何帮助,我们将不胜感激

最佳答案

我们可以转换为有序因子并过滤第一个级别

library(dplyr)
df %>%
mutate(type = ordered(type, c("HOME", "MAIL"))) %>%
group_by(group) %>%
summarise(count = sum(count[type %in%
first(levels(droplevels(type)))]))

-输出

# A tibble: 3 × 2
group count
<dbl> <dbl>
1 1 7
2 2 6
3 3 4

或者也可以使用min

df %>% 
group_by(group) %>%
summarise(count = sum(count[type ==min(ordered(type, c("HOME", "MAIL")))]))

关于r - dplyr 条件过滤组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73693243/

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