【发布时间】:2021-07-24 02:48:19
【问题描述】:
我目前正在处理一个数据集,其中包含一些供水罐的记录,其中显示了对 5 个不同的罐 (IDENT) 进行技术检查的 DATE 以及TYPE 记录的检查只有两个值:“READ”表示油箱正常工作,“ERROR”表示油箱运行不佳。
| IDENT | DATE | TYPE |
|---|---|---|
| X3 | 30/04/2021 | ERROR |
| X1 | 1/05/2021 | READ |
| X1 | 2/05/2021 | ERROR |
| X4 | 3/05/2021 | READ |
| X9 | 4/05/2021 | ERROR |
| X6 | 5/05/2021 | READ |
| X1 | 6/05/2021 | READ |
| X3 | 7/05/2021 | ERROR |
| X3 | 8/05/2021 | READ |
我必须为每个水箱创建一个可以过滤和选择每个 TYPE="ERROR" DATE 的数据框(指定水箱的日期集上是否没有记录错误是没有必要的显示它)并显示每个坦克的错误之前的最新TYPE="READ" DATE以及每个坦克的错误日期之后的最新DATE,以说明我要实现这张表:
| IDENT | READ_PRIOR | ERROR | POST_READ |
|:-----:|:----------:|:----------:|:---------:|
| X3 | NA | 30/04/2021 | 8/05/2021 |
| X3 | NA | 7/05/2021 | 8/05/2021 |
| X1 | 1/05/2021 | 2/05/2021 | 6/05/2021 |
| X9 | NA | 4/05/2021 | NA |
我尝试了什么?
我已经开始解决这个问题,方法是按日期按时间顺序排列数据集,并使用 tidyverse 包按 IDENT 分组,我也可以使用 top_n 函数为组选择最新的日期,但我的问题是我似乎无法找到一种方法来成功过滤或选择参考 TYPE="ERROR" 之前和之后的坦克的最新日期,所以这就是我头疼的地方。非常感谢你帮我找到我真正感激的人。
代码:
df<- tibble::tribble(
~IDENT ~DATE ~TYPE,
"X3", "30/04/2021", "ERROR",
"X1", "1/05/2021", "READ",
"X1", "2/05/2021", "ERROR",
"X4", "3/05/2021", "READ",
"X9", "4/05/2021", "ERROR",
"X6", "5/05/2021", "READ",
"X1", "6/05/2021", "READ",
"X3", "7/05/2021", "ERROR",
"X3", "8/05/2021", "READ")
非常感谢你们!
【问题讨论】:
标签: r date filtering tidyverse data-wrangling