r - 根据条件估算时间
问题描述
我正在尝试根据前一行值估算时间。
Concat ID Date Time1 Time2
1615 - 2019-05-14 1615 5/14/2019 20:57:56 21:26:45
161 - 2019-05-14 161 5/14/2019 21:52:19 NA
161 - 2019-05-15 161 5/15/2019 NA 1:10:49
161 - 2019-05-14 161 5/17/2019 21:52:19 NA
161 - 2019-05-15 161 5/20/2019 NA 1:10:49
对于每个 ID 列,如果日期差异小于 2,并且如果 Time1 为 NA 并且之前相邻的 Time2 为 NA,那么我想替换 Time1 中的“00:00:01”和“23:59:59”中的前一个相邻的 NA 如下所示。
Concat ID Date Time1 Time2
1615 - 2019-05-14 1615 5/14/2019 20:57:56 21:26:45
161 - 2019-05-14 161 5/14/2019 21:52:19 23:59:59
161 - 2019-05-15 161 5/15/2019 00:00:01 1:10:49
161 - 2019-05-14 161 5/17/2019 21:52:19 NA
161 - 2019-05-15 161 5/20/2019 NA 1:10:49
我尝试使用 dplyr 的领先和滞后值,但无法正确获得
解决方案
缺少可重现的数据示例,我只能猜测这会对您有所帮助:
library(dplyr)
library(lubridate)
df %>%
group_by(ID) %>%
mutate(
Time1_fixed = ifelse(
(lag(Date,1)+1 == Date) & # the previous Date was one day before this one
is.na(Time1) & # AND this Time1 is NA
is.na(lag(Time2,1)), # AND the previous Time1 was NA
'00:00:01',
Time1
),
Time2_fixed = ifelse(
(lead(Date,1) == Date+1) & # the next Date is one day after this one
is.na(Time2) & # AND this Time2 is NA
is.na(lead(Time1,1)), # AND the next Time1 is NA
'23:59:59',
Time2
)
)
推荐阅读
- c# - C#HttpClient中如何计算发送请求的时间、等待响应的时间、接收响应的时间?
- python - 单击带有 selenium 和 python 的动态下拉元素
- flutter - 将默认图标主题设置为 cupertino flutter appbar
- github-actions - Github 操作在上一步提交后进行 lint
- python-3.x - 对于具有负整数的列表,默认情况下对集合进行反向排序
- c# - 带有复选框的 C# WPF 目录树视图:检查构建项目失败,PropertyChanged 为空
- asp.net - StackExchange.Redis ConnectionMultiplexer 池用于同步方法
- javascript - 从 JS 客户端上的 Flask 服务器接收 xlsx 文件
- java - 删除映射方法不适用于弹簧
- html - 使用 zurb 基础代码的手风琴切换图标