r - 如何在 R 中使用具有多个条件的排名函数 Row_number
问题描述
这是我的虚拟数据集。
ID Order Case Date_created
123456 25800265 1 2018-06-27 07:40:23
123456 25800265 1 2018-06-25 05:29:23
123456 25800265 0 2018-07-26 06:16:28
789454 25906588 1 2018-07-12 05:59:50
789454 25906588 0 2018-07-12 07:41:29
789454 25906588 0 2018-07-10 05:43:45
789454 25906588 0 2018-07-09 05:59:26
789454 25906588 0 2018-07-05 10:39:45
287541 32140567 0 2018-07-12 07:41:29
287541 32140567 0 2018-07-10 05:43:45
287541 32140567 0 2018-07-09 05:59:26
287541 32140567 0 2018-07-05 10:39:45
根据以下条件,每个订单我只需要一个记录。当订单在'Case'中同时包含0和1时,返回Case=1的记录。如果在 Case=1 的情况下存在多个记录,则获取旧的 Date_created 记录。如果 Order 只有 Case=0,则返回 Date_created 日期最早的记录。
IE
ID Order Case Date_created
123456 25800265 1 2018-06-25 05:29:23
789454 25906588 1 2018-07-12 05:59:50
287541 32140567 0 2018-07-05 10:39:45
在 Redshift 中,我可以使用以下代码完成此操作。
select * from
(
select *,
ROW_NUMBER()over(partition by Order order by Case desc,Date_created) as latest_time
from tbl
)where latest_time=1
我如何在 R 中实现这一点?
解决方案
你去:
library(dplyr)
df <- data.frame(
ID = c("123456","123456","123456","789454","789454","789454","789454","789454","287541","287541","287541","287541"),
Order = c("25800265","25800265","25800265","25906588","25906588","25906588","25906588","25906588","32140567","32140567","32140567","32140567"),
Case = c(1,1,0,1,0,0,0,0,0,0,0,0),
Date_created = c("2018-06-27 07:40:23","2018-06-25 05:29:23","2018-07-26 06:16:28","2018-07-12 05:59:50","2018-07-12 07:41:29","2018-07-10 05:43:45","2018-07-09 05:59:26","2018-07-05 10:39:45","2018-07-12 07:41:29","2018-07-10 05:43:45","2018-07-09 05:59:26","2018-07-05 10:39:45"),
stringsAsFactors = F
)
df %>%
mutate(Date_created = as.POSIXct(Date_created)) %>%
group_by(Order) %>%
arrange(desc(Case), Date_created) %>%
mutate(row = row_number()) %>%
ungroup() %>%
filter(row == 1) %>%
select(-row) %>%
arrange(Order)
推荐阅读
- reactjs - 如何使用 GraphQL 订阅?
- google-apps-script - 如何在谷歌应用脚本中对齐电子邮件正文?
- ios - CGAffineTransform 应用额外的旋转
- ruby-on-rails - 如何进行ajax调用以在同一页面中创建帖子
- android-studio - 如何在其他颜色上拖动颜色选择器以获得该颜色?
- r - 这个 nls 函数在这里有什么问题?
- java - 收集器分组按插入,升序和降序 - java8
- jquery - 标签输入的jQuery验证规则仅在提交事件时触发
- android - undefinend 不是函数 this.setState 反应原生
- python - 在数据框的对象列中找到只有特殊字符的条目