0

My data set includes various observations at different stages throughout the year.

  • year when samples were collected.
  • site location of measurement
  • Class physical stage during r of measurement
  • date date of measurement
  • Julian Julian date

The final measurements usually occur in the early part of the new year, which is the summer time in the southern hemisphere. (e.g. summer is winter, spring is fall).

year site Class date Julian 1 2009 10C Early 2008-09-15 259 2 2009 10C L2 2008-09-29 273 3 2009 10C L3 2008-12-15 350 4 2010 10C Early 2009-08-31 243 5 2010 10C L2 2009-09-14 257 6 2010 10C L3 2009-12-11 345 7 2012 10C Early 2011-08-23 235 8 2012 10C L2 2011-09-22 265 9 2012 10C L3 2011-12-03 337 10 2012 10C LSample 2012-03-26 86 11 2013 10C Early 2012-09-07 251 12 2013 10C L2 2012-09-30 274 13 2013 10C L3 2012-12-17 352 14 2014 10C Early 2013-09-02 245 15 2014 10C L2 2013-09-16 259 16 2014 10C L3 2013-12-16 350 17 2014 10C LMid 2014-01-07 7 18 2015 10C Early 2014-09-08 251 19 2015 10C L2 2014-09-30 273 20 2015 10C L3 2014-12-01 335

I am having a difficult time converting/reassigning the Julian start date to July 1st instead of January 1st. The dot plot below illustrates the final sampling that occurs at the beginning of the year (February-March). Example plot of data The chron package has an option to reorder the origin but I cannot get it to work properly with my data.

library(chron) library(dplyr) data.date <- data %>% mutate(July.Julian = chron(date,format = c(dates = "ymd"), options(chron.origin = c(month=7, day=1, year=2008)))) Error in chron(c("2008-09-15", "2008-09-29", "2008-12-15", "2009-08-31", : misspecified chron format(s) length

or

July.Julian = chron(data$date, format = c(dates = "ymd"), options(chron.origin = c(month=7, day=1, year=2008))) Error in chron(c("2008-09-15", "2008-09-29", "2008-12-15", "2009-08-31", : misspecified chron format(s) length

I am trying to start the Julian date as 1 instead of 182.

Thoughts or suggestions are welcome.

hesaguy
  • 55
  • 1
  • 5

1 Answers1

2

Assuming that July.Julian is supposed to be Julian days past July 1st:

transform(date.data, July.Julian = as.chron(sprintf("%d-07-01", year)) + Julian)

or

date.data %>% mutate(July.Julian = as.chron(sprintf("%d-07-01", year)) + Julian)

Note that one does not actually need chron here. Just replace as.chron with as.Date and either of these work.

G. Grothendieck
  • 254,981
  • 17
  • 203
  • 341
  • This gives an error, maybe because of the year-month-day format of my dates?: `Error in sprintf("%d-07-01", c("2008-09-15", "2008-09-29", "2008-12-15", : invalid format '%d'; use format %s for character objects` . When I try it with `%s` I get really weird dates: `2009 10C Early 2008-09-15 259 11/30/47 2 2009 10C L2 2008-09-29 273 12/28/47 3 2009 10C L3 2008-12-15 350 05/30/48` – hesaguy Feb 06 '15 at 02:36
  • `date` should have been `year` in both cases. Its fixed now. – G. Grothendieck Feb 06 '15 at 03:03
  • Many thanks! Converting the `July.Julian` date column into an offset Julian seems to reassign my dates correctly (the plots look good too). `year date Julian July.Julian Julian2 2009 2008-09-15 259 2010-03-17 76` – hesaguy Feb 06 '15 at 03:14