R 向量中距离给定日期最近的日期
我想确定给定日期向量中最近的日期。假设我有以下日期向量(有5个随机日期): 现在,我想在这个向量中找到距离R 向量中距离给定日期最近的日期,r,date,closest,R,Date,Closest,我想确定给定日期向量中最近的日期。假设我有以下日期向量(有5个随机日期): 现在,我想在这个向量中找到距离x=as.date(“2013-10-01”)最近的日期 这是我的密码: > which((coldate-x) == min(coldate-x)) [1] 1 结果应该是4,因为日期“2013-09-12”最接近。但是,我有一个。。。我的代码出了什么问题?您错过了处理负值的abs: which(abs(coldate-x) == min(abs(coldate - x)))
x=as.date(“2013-10-01”)
最近的日期
这是我的密码:
> which((coldate-x) == min(coldate-x))
[1] 1
结果应该是4,因为日期
“2013-09-12”
最接近。但是,我有一个。。。我的代码出了什么问题?您错过了处理负值的abs
:
which(abs(coldate-x) == min(abs(coldate - x)))
[1] 4
另请参见
which.min
功能:
R> which.min(abs(x-coldate))
[1] 4
来自birk
包的which.closest()
函数是一个简单的选项
coldate= as.Date(c("2013-08-03", "2013-09-04", "2013-09-08", "2013-09-12", "2013-11-01"))
x = as.Date("2013-10-01")
which.closest(coldate, x)
[1] 4
在我的实际coldate向量中,我有一个NA。命令现在返回整数(0)。我必须如何处理这个NA?@Henri-从
min
函数中删除NA:它(abs(coldate-x)==min(abs(coldate-x),NA.rm=TRUE))
@latemail它可以工作。谢谢。如果x是一列日期而不是一个值,这将如何工作?虽然which.min
似乎是一个明显的选择,但@Arun的答案的优点是,如果存在多个最小值,它将返回多个值。如何处理这些情况实际上可能是创建干净数据集的一个问题,但这是应该考虑的问题。感谢您的评论@thelatemail。现在,我在使用which.min
之前对coldate进行排序,以获得“较低”的匹配。在生存包中选中neardate
,您也可以使用base::findInterval(x,coldate)
coldate= as.Date(c("2013-08-03", "2013-09-04", "2013-09-08", "2013-09-12", "2013-11-01"))
x = as.Date("2013-10-01")
which.closest(coldate, x)
[1] 4