[R] Incorrect Conversion of Datetime

Enrico Schumann e@ @end|ng |rom enr|co@chum@nn@net
Wed Jan 8 21:50:25 CET 2020


>>>>> On Wed, 8 Jan 2020 17:43:29 +0100, Ogbos Okike <giftedlife2014 using gmail.com> writes:

  Ogbos> Dear Enrico,
  Ogbos> Thanks for your time.
  Ogbos> I have tried to learn how to use dput in R. I have not yet made much progress.

  Ogbos> I have succeeded in using dput to store my data frame. I first
  Ogbos> converted my data into a data frame and then used:
  Ogbos> dput(dd,file="Ogbos2",control = c("keepNA", "keepInteger",
  Ogbos> "showAttributes")) to output the dput file. dd is my data frame.

  Ogbos> When I opened the file, I didn't like its content as it differs very
  Ogbos> much from my data frame. But I don't know whether that makes sense to
  Ogbos> you. I am attaching the file.
  Ogbos> I am thanking you in advance for additional suggestions.
  Ogbos> Best wishes
  Ogbos> Ogbos

Hello Ogbos

your attempt worked fine: this is the data you sent


    dta <- structure(list(dta.year = c(98L, 98L, 98L, 98L, 98L, 98L, 98L, 
      98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 
      98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L), dta.month = c(1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), dta.day = c(5L, 
      5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
      5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), dta.hour = c(2L, 
      3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 
      17L, 18L, 19L, 20L, 21L, 22L, 23L, 0L, 1L, 2L, 3L, 4L, 5L, 6L
      ), dta.counts = c(6462L, 6450L, 6423L, 6467L, 6480L, 6457L, 6417L, 
      6467L, 6467L, 6468L, 6500L, 6482L, 6465L, 6465L, 6475L, 6452L, 
      6440L, 6478L, 6470L, 6422L, 6448L, 6462L, 6485L, 6462L, 6485L, 
      6470L, 6487L, 6515L, 6488L)), .Names = c("dta.year", "dta.month", 
      "dta.day", "dta.hour", "dta.counts"), row.names = c(NA, -29L),
      class = "data.frame")

But then:

  head(dta)
  ##   dta.year dta.month dta.day dta.hour dta.counts
  ## 1       98         1       5        2       6462
  ## 2       98         1       5        3       6450
  ## 3       98         1       5        4       6423
  ## 4       98         1       5        5       6467
  ## 5       98         1       5        6       6480
  ## 6       98         1       5        7       6457

The data that you read in has January (1) as month.
So whatever goes wrong, seems to go wrong when you read
the data.  Are you quite sure you read the file you
read is the file you have shown?


kind regards
    Enrico

  Ogbos> On Wed, Jan 8, 2020 at 1:07 PM Enrico Schumann <es using enricoschumann.net> wrote:
  >> 
  >> 
  >> Quoting Ogbos Okike <giftedlife2014 using gmail.com>:
  >> 
  >> > Dear Friends,
  >> > A sample of my data is:
  >> > 98 05 01 02    8541
  >> > 98 05 01 03    8548
  >> > 98 05 01 04    8512
  >> > 98 05 01 05    8541
  >> > 98 05 01 06    8509
  >> > 98 05 01 07    8472
  >> > 98 05 01 08    8454
  >> > 98 05 01 09    8461
  >> > 98 05 01 10    8462
  >> > 98 05 01 11    8475
  >> > 98 05 01 12    8433
  >> > 98 05 01 13    8479
  >> > 98 05 01 14    8417
  >> > 98 05 01 15    8463
  >> > 98 05 01 16    8473
  >> > 98 05 01 17    8450
  >> > 98 05 01 18    8433
  >> > 98 05 01 19    8437
  >> > 98 05 01 20    8437
  >> > 98 05 01 21    8438
  >> > 98 05 01 22    8421
  >> > 98 05 01 23    8420
  >> > 98 05 02 00    8371
  >> > 98 05 02 01    8338
  >> > 98 05 02 02    8251
  >> > 98 05 02 03    8204
  >> > 98 05 02 04    8183
  >> > 98 05 02 05    8231
  >> > 98 05 02 06    8242
  >> > Columns 1, 2, 3, 4 and 5 stands for year, month, day , hour and count.
  >> >
  >> > Using:
  >> > Sys.setenv( TZ="GMT" )
  >> >
  >> >
  >> > dta <- read.table("Ohr1may98", col.names = c("year", "month", "day",
  >> > "hour", "counts"))
  >> > dta$year <- with( dta, ifelse(year < 50, year + 2000, year + 1900))
  >> > dta$datetime <- with( dta, as.POSIXct(ISOdatetime(year, month,day,hour,0,0)))
  >> > a =  dta$datetime
  >> > I converted the datetime and plotted the graph of count vs a. The plot
  >> > was great but I have issues with the date.
  >> >
  >> > The raw data is for some hours for Ist and second day of may 1998 as
  >> > is evident from the sample data. But the result of date stored in "a"
  >> > above shows:
  >> >> a
  >> >  [1] "1998-01-05 02:00:00 GMT" "1998-01-05 03:00:00 GMT"
  >> >  [3] "1998-01-05 04:00:00 GMT" "1998-01-05 05:00:00 GMT"
  >> >  [5] "1998-01-05 06:00:00 GMT" "1998-01-05 07:00:00 GMT"
  >> >  [7] "1998-01-05 08:00:00 GMT" "1998-01-05 09:00:00 GMT"
  >> >  [9] "1998-01-05 10:00:00 GMT" "1998-01-05 11:00:00 GMT"
  >> > [11] "1998-01-05 12:00:00 GMT" "1998-01-05 13:00:00 GMT"
  >> > [13] "1998-01-05 14:00:00 GMT" "1998-01-05 15:00:00 GMT"
  >> > [15] "1998-01-05 16:00:00 GMT" "1998-01-05 17:00:00 GMT"
  >> > [17] "1998-01-05 18:00:00 GMT" "1998-01-05 19:00:00 GMT"
  >> > [19] "1998-01-05 20:00:00 GMT" "1998-01-05 21:00:00 GMT"
  >> > [21] "1998-01-05 22:00:00 GMT" "1998-01-05 23:00:00 GMT"
  >> > [23] "1998-01-06 00:00:00 GMT" "1998-01-06 01:00:00 GMT"
  >> > [25] "1998-01-06 02:00:00 GMT" "1998-01-06 03:00:00 GMT"
  >> > [27] "1998-01-06 04:00:00 GMT" "1998-01-06 05:00:00 GMT"
  >> > [29] "1998-01-06 06:00:00 GMT"
  >> > This seems to suggest day 5 and 6 in January 1998 instead of day 1 and
  >> > 2 in May of 1998.
  >> >
  >> > I have spent some time trying to resolve this but I have not been successful.
  >> >
  >> > I would be thankful if you could help me to check where I went astray.
  >> >
  >> > Thank you.
  >> > Best wishes
  >> > Ogbos
  >> >
  >> 
  >> I cannot reproduce these results. Could you please provide a fully
  >> reproducible example, by providing a small example dataset via 'dput(dta)'?
  >> 
  >> 
  >> --
  >> Enrico Schumann
  >> Lucerne, Switzerland
  >> http://enricoschumann.net
  >> 

  Ogbos> structure(list(dta.year = c(98L, 98L, 98L, 98L, 98L, 98L, 98L, 
  Ogbos> 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 
  Ogbos> 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L, 98L), dta.month = c(1L, 
  Ogbos> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
  Ogbos> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), dta.day = c(5L, 
  Ogbos> 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
  Ogbos> 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), dta.hour = c(2L, 
  Ogbos> 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 
  Ogbos> 17L, 18L, 19L, 20L, 21L, 22L, 23L, 0L, 1L, 2L, 3L, 4L, 5L, 6L
  Ogbos> ), dta.counts = c(6462L, 6450L, 6423L, 6467L, 6480L, 6457L, 6417L, 
  Ogbos> 6467L, 6467L, 6468L, 6500L, 6482L, 6465L, 6465L, 6475L, 6452L, 
  Ogbos> 6440L, 6478L, 6470L, 6422L, 6448L, 6462L, 6485L, 6462L, 6485L, 
  Ogbos> 6470L, 6487L, 6515L, 6488L)), .Names = c("dta.year", "dta.month", 
  Ogbos> "dta.day", "dta.hour", "dta.counts"), row.names = c(NA, -29L), class = "data.frame")


-- 
Enrico Schumann
Lucerne, Switzerland
http://enricoschumann.net



More information about the R-help mailing list