根据DPLYR中的开始和停止日期生成新变量
我需要帮助。我有一些看起来与此相似的数据。
Machine Start Stop ServiceType
1 XX 2014-12-04 <NA> AA
2 XX 2013-09-05 2013-11-05 BB
3 XX 2013-11-21 2014-09-25 BB
4 XX 2013-10-11 2014-11-18 BB
5 XX 2021-12-03 <NA> AA
6 XX 2020-08-06 2022-09-15 AA
7 XX 2021-06-10 <NA> BB
8 YY 2020-01-17 <NA> BB
9 YY 2015-11-04 2018-04-30 BB
10 YY 2016-05-28 2019-03-21 BB
11 YY 2019-09-27 <NA> BB
12 YY 2018-01-05 <NA> AA
因此,我想做的是生成一个新的变量,例如维护或其他内容,那就是aa
或bb
,如果只有一种服务类型是活动的,或者cc < /code>如果两个
AA
和bb
都重叠。就像,
Machine Date Maintenance
1 XX 2013-09-05 BB
2 XX 2013-11-21 BB
3 XX 2013-10-11 AA
4 XX 2014-12-04 CC
5 XX 2021-12-03 AA
6 YY 2015-11-04 BB
7 YY 2016-05-28 CC
8 YY 2020-01-17 BB
我一直在使用dplyr
和lubridate
,但是我有点不确定如何执行此任务,任何帮助都会很友善。
PS。在这种情况下,na
可以将机器永远在该服务上。
I am in need of assistance. I have some data that looks similar to this.
Machine Start Stop ServiceType
1 XX 2014-12-04 <NA> AA
2 XX 2013-09-05 2013-11-05 BB
3 XX 2013-11-21 2014-09-25 BB
4 XX 2013-10-11 2014-11-18 BB
5 XX 2021-12-03 <NA> AA
6 XX 2020-08-06 2022-09-15 AA
7 XX 2021-06-10 <NA> BB
8 YY 2020-01-17 <NA> BB
9 YY 2015-11-04 2018-04-30 BB
10 YY 2016-05-28 2019-03-21 BB
11 YY 2019-09-27 <NA> BB
12 YY 2018-01-05 <NA> AA
So what I would like to do is generate a new variable, say Maintenance or something, that's either AA
or BB
if only one service types is active or CC
if both AA
and BB
are overlapping. Like,
Machine Date Maintenance
1 XX 2013-09-05 BB
2 XX 2013-11-21 BB
3 XX 2013-10-11 AA
4 XX 2014-12-04 CC
5 XX 2021-12-03 AA
6 YY 2015-11-04 BB
7 YY 2016-05-28 CC
8 YY 2020-01-17 BB
I have been working with dplyr
and lubridate
but I am a bit unsure how to perform this task, any help would be kind.
ps. NA
's in this case can be considered a machine is on that service forever.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题中存在一些不一致之处(有些变量是重叠的,但在您的预期输出中被认为是独立的),这是通过重叠值组成并获得您的预期输出来分组的一种方法。本解决方案使用
ivs
,tidyverse
和lubridate
库:数据
There are some inconsistencies in your question (some variables do overlap but they are considered separate in your expected output), here's a way to group by overlapping values and get somewhat your expected output. This solution uses the
ivs
,tidyverse
, andlubridate
libraries:data