r - 检测范围内的双日期并调整日期
问题描述
我有以下数据框:
library(hydroGOF)
library(ModelMetrics)
library(dplyr)
Date_from <- c("2013-01-01","2013-01-04","2013-01-06","2013-01-11")
Date_to <- c("2013-01-03","2013-01-06","2013-01-10","2013-01-14")
Parameter <- c("Par1","Par1","Par1","Par1")
conc<-c("1.5","2.5","1.5","1.8")
metals<-data.frame(Date_from,Date_to,Parameter,conc)
metals$Date_from<-as.Date(metals$Date_from)
metals$Date_to<-as.Date(metals$Date_to)
metals$conc<-as.numeric(as.character(metals$conc))
我需要在日期范围内检测错误的开始日期。在此示例中,它将是从 2013-01-06 开始的第三个范围,这是第二个日期范围的结束日期。我需要代码来检测这一点并在前一个日期范围结束后一天调整开始日期。结果应如下所示:
Date_from Date_to Parameter conc
2013-01-01 2013-01-03 Par1 1.5
2013-01-04 2013-01-06 Par1 2.5
2013-01-07 2013-01-10 Par1 1.5
2013-01-11 2013-01-14 Par1 1.8
解决方案
你可以试试:
ind = which(difftime(metals$Date_to,lead(metals$Date_from))==0)+1 #search for time difference == 0, save the index
metals[ind,"Date_from"] = metals[ind,"Date_from"] + 1 # add a day to the start date
推荐阅读
- ios - Swift - 如何运行 x% 的函数?
- javascript - 是否可以使用 javascript 过滤 wordpress 查询?
- arrays - 在 Fortran 中,从数组中随机选择非零元素的最佳方法是什么?
- bash - cronjobs:每周/每月/每年运行时每天运行“除了”
- html - 选择父类中的所有元素
- python - 如何使用 PySpark 的 Window 函数来模拟指数衰减?
- python - 在 Python 中调用类属性
- javascript - ASP.NET Core MVC 可以在不使用控制器的情况下在新选项卡中打开视图吗?
- c# - mac 上的 dotnet Core 命令错误:“没有这样的文件或目录”
- pandas - 比较 Pyspark 中的列名