根据2列的条件标记行

时间:2019-10-30 16:01:28

标签: r datatable dplyr

我有如下数据

    concat         Type   ddate      TTIME
1348 - 2019-06-10   B   6/10/2019   12:34:03
1348 - 2019-06-10   A   6/10/2019   12:38:02
1348 - 2019-06-10   B   6/10/2019   13:37:15
1348 - 2019-06-11   A   6/11/2019   14:35:20
1348 - 2019-06-11   B   6/11/2019   18:01:01
1348 - 2019-06-11   A   6/11/2019   18:02:42
1348 - 2019-06-11   B   6/11/2019   19:59:34

我正在尝试为concat组添加标记,如果最短时间=类型A,而最大时间=类型B,则需要为concat组的所有订单项添加包含。其他需要将特定concat组的所有订单项标记为排除,如下所示:

       concat      Type   ddate       TTIME    Category
1348 - 2019-06-10   B   6/10/2019   12:34:03    Exclude
1348 - 2019-06-10   A   6/10/2019   12:38:02    Exclude
1348 - 2019-06-10   B   6/10/2019   13:37:15    Exclude
1348 - 2019-06-11   A   6/11/2019   14:35:20    Include
1348 - 2019-06-11   B   6/11/2019   18:01:01    Include
1348 - 2019-06-11   A   6/11/2019   18:02:42    Include
1348 - 2019-06-11   B   6/11/2019   19:59:34    Include

我尝试如下所示,但无法生成所需的输出

df1 = df1 %>% 
arrange(concat, time) %>% 
group_by(concat) %>% 
mutate(
 Category = ifelse((TTIME == min(TTIME) & Type =="A") & (TTIME == max(TTIME) & Type =="B"),"Include","Exclude"))

1 个答案:

答案 0 :(得分:0)

我会考虑分离这些条件,以使其更易于使用。

为说明示例,您可以重新编码行,其中min的{​​{1}}与TTIME(以及Type == "A"max相似)。 / p>

然后,要包含一个组,该组必须同时包含“ A”和“ B”。

这是否符合您的逻辑?

Type == "B"