我注意到基本R quantile
函数不支持日期参数。
我理解定义日期的分位数需要注意定义(即如果你有6个日期并要求第25个百分位,则需要定义合适的舍入)。
是否有效地实现了这样的分位数函数,无论是作为基础的一部分还是另一个包。
以下示例函数基本上实现了我感兴趣的内容(通过一些调整来处理第0百分位的情况),但我认为可以实现更高效的实现。
#Date quantile function.
dquantile <- function(x, probs){
sx <- sort(x)
pos <- round( probs * length(x) )
return( sx[pos] )
}
# Example.
dates <- as.Date("01/01/1900", "%d/%m/%Y") + floor( 36500 * runif(100000) )
dquantile(dates, c(0.001, 0.025, 0.975, 0.999) )
答案 0 :(得分:4)
如果x
是日期的向量,probs
是概率向量:
# test input
x <- as.Date("2018-03-21") + 0:10
probs <- 1:9/10
as.Date(quantile(unclass(x), probs), origin = "1970-01-01")
,并提供:
10% 20% 30% 40% 50% 60%
"2018-03-22" "2018-03-23" "2018-03-24" "2018-03-25" "2018-03-26" "2018-03-27"
70% 80% 90%
"2018-03-28" "2018-03-29" "2018-03-30"
答案 1 :(得分:2)
quantile
函数确实支持日期,您只需要指定type
参数即可。您的问题可以通过以下方法解决:
dates <- as.Date("01/01/1900", "%d/%m/%Y") + floor( 36500 * runif(100000) )
quantile(dates, probs = c(0.001, 0.025, 0.975, 0.999), type = 1)
0.1% 2.5% 97.5% 99.9%
"1900-02-04" "1902-06-23" "1997-06-10" "1999-10-30"