首页 > 解决方案 > 过滤依赖于两列的逻辑

问题描述

我正在努力编写正确的逻辑来仅根据一列中的条件过滤两列。我有多个 id,如果一个 id 出现在 2020 年,我希望该 id 被测量的其他年份的所有数据都出现。

例如,如果一个组包含数字 3,我想要该组中的所有值。我们最终应该得到一个包含所有 b 和 d 行的数据框。

df4 <- data.frame(group = c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", 
                        "c", "c", "c", "c", "c", "d", "d", "d", "d", "d"),
                  pop = c(1, 2, 2, 4, 5, 1, 2, 3, 4, 5, 1, 2, 1, 4, 5, 1, 2, 3, 4, 5),
                  value  = c(1,2,3,2.5,2,2,3,4,3.5,3,3,2,1,2,2.5,0.5,1.5,6,2,1.5)) 

threes <- df4 %>%
   filter(pop == 3 |&ifelse????

标签: rdplyr

解决方案


你可以做:

df4[df4$group %in% df4$group[df4$pop == 3],]
#>    group pop value
#> 6      b   1   2.0
#> 7      b   2   3.0
#> 8      b   3   4.0
#> 9      b   4   3.5
#> 10     b   5   3.0
#> 16     d   1   0.5
#> 17     d   2   1.5
#> 18     d   3   6.0
#> 19     d   4   2.0
#> 20     d   5   1.5

推荐阅读