我有一个如下所示的表:
date user X1 X2 X3
1/1 1 0 3 34
2/1 1 0 7 65
3/1 1 0 0 0
4/1 1 25 4 65
1/1 2 285 0 0
2/1 2 0 0 0
3/1 2 0 54 0
4/1 2 0 0 0
如何使用dplyr
选择仅在最后可用日期(4/1)对所有X具有非零数据的用户?在这种情况下,应删除user 2
。谢谢
4条答案
按热度按时间tv6aics11#
如果组的最后一行中的任何选定列具有非0值,则使用
if_any
保留组:cld4siwp2#
利用
dplyr
,我们可以计算last
记录的rowSums
。bkhjykvo3#
另一个选项使用
any
和c_across
来检查值是否为0和最后一个row_number
,如下所示:创建于2023年3月15日,使用reprex v2.0.2
3z6pesqy4#
尽管OP显然更倾向于
dplyr
,但data.table
解决方案具有完整性