【发布时间】:2019-10-30 16:01:28
【问题描述】:
我有如下数据
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"))
【问题讨论】:
-
尝试在两个测试之间的代码中使用或运算符 (|)。你有 & (and) 这意味着你不会有任何真值(你不能同时拥有 Type == "B" 和 Type == "A")
-
但是如果我使用 or 运算符,如果满足任何条件,我可能会得到“包含”。 IE。即使 max(TTIME) == A,我最终也会得到 Include;对我来说,TTIME的最小值应该是A,TTIME的最大值应该是B(两个条件都需要满足)