【发布时间】:2019-05-19 11:05:12
【问题描述】:
我正在尝试找出一个过滤器来识别以下数据帧的 ID。
x <- data.frame("log_id" = c(16006,16006,16006,25109,25109,25109,25109,20506,20506),
"status" = c(0,1,1,0,1,1,1,0,1),
"version" = c(1,2,3,1,2,3,4,1,2),
"date_time" = c(as.Date("2018-10-27 00:00:00"), as.Date("2019-01-06 00:00:00"),as.Date("2019-01-16 00:00:00"),
as.Date("2018-10-27 00:00:00"), as.Date("2017-01-06 00:00:00"), as.Date("2019-02-17 00:00:00"),
as.Date("2018-10-27 00:00:00"), as.Date("2019-01-12 00:00:00"),as.Date("2019-02-12 00:00:00")))
我需要识别 ID,以便在按 log_id 分组后,与更高版本号关联的 date_time 应该比以前的版本号更新。
换句话说,对于每个 log_id,具有更高版本的记录应该比以前的记录具有 >= 的日期时间。我需要找到不符合此条件的事件的 log_id 并记录特定的“log_id”。
我尝试了基于 group_by 的 dplyr 解决方案并使用 ifelse 进行操作,但无法获得正确的语法。
solution <- x %>%
select(log_id,
status,
version,
date_time) %>%
group_by(log_id) %>%
{(ifelse(date_time[version== 1] < date_time[version!= 1], 0,1))} %>%
arrange(log_id)
我希望将结果存储在向量中,以便识别所有有问题的“log_id”。
对于这个数据框,预期的输出是:
"incidented log_id = " "25109"
原因是 log_id = 25109 的 date_time 值(“2017-01-06 00:00:00”)与其 version=2 相关联,比 date_time 值(“2018-10-27 00:00: 00") 与其版本 = 1 相关联。
【问题讨论】:
-
您能否发布该数据示例的预期输出?
-
刚刚在描述中阐明了预期的输出。我希望拥有 log_id 25109,因为与版本 2 (2017-01-06 00:00:00) 关联的值早于与版本 1 (2018-10-27 00:00:00) 关联的值。
-
看看是不是现在。