gpt4 book ai didi

R时间序列对象ts()最小和最大日期

转载 作者:行者123 更新时间:2023-12-04 09:22:12 24 4
gpt4 key购买 nike

我想在R ts()对象中找到最小值和最大值的日期。我尝试了which.minwhich.max函数,但它们仅返回“行号”。我想输出实际的日期。谢谢你。

data <- ts(round(rnorm(60), 2), frequency = 12, end = c(2016, 12))
data
which.min(data)
which.max(data)

最佳答案

这是您在数据中查找最小值和最大值的年份和月份的方法:

> data <- ts(round(rnorm(60), 2), frequency = 12, end = c(2016, 12))
> data
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 0.18 -0.07 -0.77 1.23 -0.97 1.20 -1.41 1.39 -0.72 -0.94 0.28 0.97
2013 -0.86 -0.57 -0.16 -1.24 -0.35 -0.06 0.78 1.32 1.80 -0.51 -1.91 1.14
2014 -0.51 1.21 0.14 0.30 1.18 -0.32 -0.92 -0.46 -0.97 -0.94 -1.56 -0.63
2015 0.13 0.93 -1.45 1.97 0.04 0.55 0.45 0.13 1.14 0.27 0.15 -1.39
2016 0.68 2.16 -1.56 -0.44 1.07 1.27 1.01 -2.93 -0.19 -0.70 1.44 0.09

最小日期的对应日期是
> data_min_value <- data[which.min(data)]
> data_min_value
[1] -2.93
> data_min_value_time <- time(data)[which.min(data)]
> data_min_value_time
[1] 2016.583
> data_min_value_year <- floor(time(data)[which.min(data)])
> data_min_value_year
[1] 2016
> data_min_value_month <- (time(data)[which.min(data)] %% 1)*12
> data_min_value_month
[1] 7
> data_min_value_month_abb <- month.abb[(time(data)[which.min(data)] %% 1)*12+1]
> data_min_value_month_abb
[1] "Aug"

您获得最大值的日期类似
> data[which.max(data)]
[1] 2.16
> floor(time(data)[which.max(data)]) # Year
[1] 2016
> month.abb[(time(data)[which.max(data)] %% 1)*12+1] # Abbreviation of month
[1] "Feb"

以下是在以上示例中使用的有用功能的摘要:
> floor(2016.563)  # find out the integer part on the number
[1] 2016
> 2016.563 %% 1 # find out the fractional part on the number
[1] 0.563
> month.abb[0.563*12+1] # find out the abbreviation of the month name
[1] "Jul"

关于R时间序列对象ts()最小和最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46515706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com