r累积百分比的子集,直到并包括一定值
我试图将每个分组类别的一个百分比和一排。
当我通过以下内容过滤时:
df <- df %>%
group_by(yyyymm)
df[df$cumperc <= .50, ]
我得到:
ind yyyymm cumperc name
1 202006 0.196 CHILD
2 202006 0.327 WOMAN
3 202006 0.401 MAN
4 202006 0.461 PET
5 202007 0.157 CHILD
6 202007 0.265 MAN
7 202007 0.369 WOMAN
8 202007 0.459 PET
9 202007 0.494 FRIEND
我想要:
ind yyyymm cumperc name
1 202006 0.196 CHILD
2 202006 0.327 WOMAN
3 202006 0.401 MAN
4 202006 0.461 PET
5 202006 0.504 FRIEND
6 202007 0.157 CHILD
7 202007 0.265 MAN
8 202007 0.369 WOMAN
9 202007 0.459 PET
10 202007 0.494 FRIEND
11 202007 0.519 ENEMY
其中包括高达0.50的值和另外一行。
有什么建议如何系统地对所有组(在这种情况下Yyyymm列)进行此操作?
完整(示例)DF供参考:
ind yyyymm cumperc name
1 202006 0.196 CHILD
2 202006 0.327 WOMAN
3 202006 0.401 MAN
4 202006 0.461 PET
5 202006 0.504 FRIEND
6 202006 0.604 ENEMY
7 202006 0.845 PLACE
8 202006 1.000 ITEM
9 202007 0.157 CHILD
10 202007 0.265 MAN
11 202007 0.369 WOMAN
12 202007 0.459 PET
13 202007 0.494 FRIEND
14 202007 0.519 ENEMY
15 202007 0.766 ITEM
16 202007 1.000 PLACE
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
lag
保留所有行,其中
cumperc&lt; 0.5
加上另外一排。请注意,假设cumperc
值是按组从最小到最大的组排序的。You could use
lag
This retains all rows where
cumperc < 0.5
plus one additional row. Note this assumes thatcumperc
values are sorted by group, from smallest to largest.这是一个潜在的dplyr解决方案:
由
那会适合您的用例吗?
Here is a potential dplyr solution:
Created on 2022-07-07 by the reprex package (v2.0.1)
Would that suit your use-case?