r 在分组后保留重复项,而不是最小值

问题描述 投票:0回答:1

我有一个这样的数据集。

   ID    Group    Value    Col3
   1     z1       1.29     1
   1     z1       0.81     1
   2     z2       2.89     1
   2     z2       1.53     2
   3     z1       0.13     3
   3     z1       0.97     3
   4     z3       10.75    3
   4     z3       8.13     2
   5     x2       0.45     1
   5     x2       1.43     3

当基于

Col3=2
 识别重复项时,如何保留 
group_by(Id,Group)

的行

预期结果

  ID    Group    Value    Col3
   1     z1       1.29     1
   1     z1       0.81     1

   2     z2       1.53     2

   3     z1       0.13     3
   3     z1       0.97     3
  
   4     z3       8.13     2

   5     x2       0.45     1
   5     x2       1.43     3

请注意,ID 2 和 ID 4 中的一行被排除,仅保留 Col3=2 的行。预先感谢您的帮助。

r dplyr duplicates aggregate data-transform
1个回答
0
投票

看起来如果组中有 2 你想保留它,否则返回所有行。这似乎可以解决问题

dd %>% 
  group_by(ID, Group) %>% 
  filter(!any(Col3==2)  | (any(Col3==2) & Col3==2))

返回

     ID Group Value  Col3
  <int> <chr> <dbl> <int>
1     1 z1     1.29     1
2     1 z1     0.81     1
3     2 z2     1.53     2
4     3 z1     0.13     3
5     3 z1     0.97     3
6     4 z3     8.13     2
7     5 x2     0.45     1
8     5 x2     1.43     3
© www.soinside.com 2019 - 2024. All rights reserved.