如果我们按两列分组,我有一个包含重复行的数据集
ID Group Value
1 z1 0
1 z1 0.81
2 z2 2.89
2 z2 1.53
3 z1 -0.23
3 z1 0
4 z3 10.75
4 z3 8.13
5 x2 0.45
5 x2 1.43
如果按
ID
和 Group
列分组时存在重复行,我会尝试仅保留非零行
预期产量
ID Group Value
1 z1 0.81
2 z2 2.89
2 z2 1.53
3 z1 -0.23
4 z3 10.75
4 z3 8.13
5 x2 0.45
5 x2 1.43
ID 1 和 3 中包含 0 的行被排除。这是我迄今为止尝试过的
df %>%
group_by(ID, GroupID) %>%
filter(if (any(duplicated(.) Value != 0 else TRUE) %>%
ungroup()
我的原始数据集中有 22000 行,上面的代码花了很长时间并且没有收敛。 然后我尝试了这个。
df %>%
group_by(ID, GroupID) %>%
slice(if (any(duplicated(.))) which(Value != 0) else 1:n()) %>%
ungroup()
这仍然没有解决问题,没有给我预期的结果,代码花了很长时间,而且似乎什么也没有发生。
非常感谢任何有关如何调整此代码的建议。谢谢。
df |> dplyr::filter(!(Value == 0 & n() > 1), .by = c(ID, Group))