Eswar
Eswar

Reputation: 63

Forecasting timeseries data

           **Point Forecast     Lo 80    Hi 80       Lo 95    Hi 95 account
2017.4137        180.8861 103.03618 258.7361  61.8249012 299.9474  R00172
2017.4164        181.3260 102.63465 260.0173  60.9779946 301.6739  R00172
2017.4192        181.7658 102.24090 261.2906  60.1429756 303.3886  R00172
2017.4219        182.2056 101.85468 262.5565  59.3194730 305.0917  R00172
2017.4247        182.6454 101.47575 263.8151  58.5071341 306.7837  R00172
2017.4274        183.0852 101.10391 265.0665  57.7056233 308.4648  R00172**

The following output is as follows my requirement is to convert this 2017.4137,2017.4164,2017.4192......... into Date format.

 esw<-rownames(df2)
> esw
  [1] "2017.4137"   "2017.4164"   "2017.4192"   "2017.4219"   "2017.4247"   "2017.4274"  
  [7] "2017.4301"   "2017.4329"   "2017.4356"   "2017.4384"   "2017.4411"   "2017.4438"  
 [13] "2017.4466"   "2017.4493"   "2017.4521"   "2017.4548"   "2017.4575"   "2017.4603"  
 [19] "2017.4630"   "2017.4658"   "2017.4685"   "2017.4712"   "2017.4740"   "2017.4767"  
 [25] "2017.4795"   "2017.4822"   "2017.4849"   "2017.4877"   "2017.4904"   "2017.4932"  

iam not able to get the date format

df2$dates<-as.Date(esw,format="%Y/%m/%d")

df2$dates<-as.Date(esw,format="%Y/%m/%d")

> df2$dates
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [31] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [61] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [91] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

Iam getting all NA's. Can anybody please help me how to proceed further?

Thanks

Upvotes: 0

Views: 89

Answers (1)

Pierre Lapointe
Pierre Lapointe

Reputation: 16277

Here's how to transform esw into a datetime format using lubridate:

esw <- c("2017.4137",   "2017.4164",   "2017.4192" ,  "2017.4219",   "2017.4247",   "2017.4274",  
                 "2017.4301",   "2017.4329",   "2017.4356" ,  "2017.4384" ,  "2017.4411" ,  "2017.4438",  
                  "2017.4466",   "2017.4493",   "2017.4521",   "2017.4548",   "2017.4575" ,  "2017.4603" , 
                  "2017.4630",   "2017.4658",   "2017.4685" ,  "2017.4712" ,  "2017.4740" ,  "2017.4767" , 
                  "2017.4795",   "2017.4822",   "2017.4849" ,  "2017.4877" ,  "2017.4904" ,  "2017.4932")
esw <- as.numeric(esw)
library(lubridate)
format(date_decimal(esw), "%Y-%m-%d %H:%M:%S")

 [1] "2017-06-01 00:00:43" "2017-06-01 23:39:50" "2017-06-03 00:11:31" "2017-06-03 23:50:38" "2017-06-05 00:22:19"
 [6] "2017-06-06 00:01:26" "2017-06-06 23:40:33" "2017-06-08 00:12:14" "2017-06-08 23:51:21" "2017-06-10 00:23:02"
[11] "2017-06-11 00:02:09" "2017-06-11 23:41:16" "2017-06-13 00:12:57" "2017-06-13 23:52:04" "2017-06-15 00:23:45"
[16] "2017-06-16 00:02:52" "2017-06-16 23:41:59" "2017-06-18 00:13:40" "2017-06-18 23:52:47" "2017-06-20 00:24:28"
[21] "2017-06-21 00:03:35" "2017-06-21 23:42:43" "2017-06-23 00:14:23" "2017-06-23 23:53:31" "2017-06-25 00:25:11"
[26] "2017-06-26 00:04:19" "2017-06-26 23:43:26" "2017-06-28 00:15:07" "2017-06-28 23:54:14" "2017-06-30 00:25:55"

If you only want dates and no time, be careful because the year fractions can lead to duplicate dates. In this case, June 1 2017

format(date_decimal(esw), "%Y-%m-%d")
 [1] "2017-06-01" "2017-06-01" "2017-06-03" "2017-06-03" "2017-06-05" "2017-06-06" "2017-06-06" "2017-06-08" "2017-06-08"
[10] "2017-06-10" "2017-06-11" "2017-06-11" "2017-06-13" "2017-06-13" "2017-06-15" "2017-06-16" "2017-06-16" "2017-06-18"
[19] "2017-06-18" "2017-06-20" "2017-06-21" "2017-06-21" "2017-06-23" "2017-06-23" "2017-06-25" "2017-06-26" "2017-06-26"
[28] "2017-06-28" "2017-06-28" "2017-06-30"

Upvotes: 1

Related Questions