ZhaoXing
2013-Apr-06 08:00 UTC
[R] How to plot several years data with date information by months?
Hi, all I have a medium sized data, 6 years. Each observation is a case with a date variable, such as '2004-08-02'. Some of the months didn't occur a case. I want to plot the 6 years data by month, and the Y_axis is the freqency of cases for each month, meaning 12*6=72 bars or points in the figure. I though of a method, 1st, using the months function, then ploting. But I need to assign zero to the months without case. And a lot of other manipulations. Is there any simpler way to complete this? or just a simple function exists? Thanks in advance ZhaoXing
Marc Girondot
2013-Apr-06 10:04 UTC
[R] How to plot several years data with date information by months?
Le 06/04/13 10:00, ZhaoXing a ?crit :> Hi, all > > I have a medium sized data, 6 years. Each observation is a case with a date variable, such as '2004-08-02'. > Some of the months didn't occur a case. > I want to plot the 6 years data by month, and the Y_axis is the freqency of cases for each month, meaning 12*6=72 bars or points in the figure. > I though of a method, 1st, using the months function, then ploting. But I need to assign zero to the months without case. And a lot of other manipulations. > Is there any simpler way to complete this? or just a simple function exists? > > Thanks in advance > > ZhaoXing > ______________________________________________ >Do you want something like this ? x <- seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 day") y <- sin(1:length(x))+1 plot(x, y, bty="n", type="l", xaxt="n", las=1) axis(1, at=seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 month"), label=FALSE) axis(1, at=seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 year"), lwd.ticks=2, label=c(2000:2006)) Sincerely Marc -- __________________________________________________________ Marc Girondot, Pr Laboratoire Ecologie, Syst?matique et Evolution Equipe de Conservation des Populations et des Communaut?s CNRS, AgroParisTech et Universit? Paris-Sud 11 , UMR 8079 B?timent 362 91405 Orsay Cedex, France Tel: 33 1 (0)1.69.15.72.30 Fax: 33 1 (0)1.69.15.73.53 e-mail: marc.girondot at u-psud.fr Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html Skype: girondot
Marc Girondot
2013-Apr-06 12:44 UTC
[R] How to plot several years data with date information by months?
Le 06/04/13 10:00, ZhaoXing a ?crit :> Hi, all > > I have a medium sized data, 6 years. Each observation is a case with a date variable, such as '2004-08-02'. > Some of the months didn't occur a case. > I want to plot the 6 years data by month, and the Y_axis is the freqency of cases for each month, meaning 12*6=72 bars or points in the figure. > I though of a method, 1st, using the months function, then ploting. But I need to assign zero to the months without case. And a lot of other manipulations. > Is there any simpler way to complete this? or just a simple function exists? > > Thanks in advance > > ZhaoXing >Sorry, I completely overlooked your question. Here is a better answer. Sincerely Marc # I generate dummy data x <- seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 day") y <- sample(0:10, 2557, replace=TRUE) t <- y + sample(5:20, 2557, replace=TRUE) dt <- data.frame(d = x, obs = y, total=t) # I erase some data; sometimes full month is erased dt <- dt[c(20:156, 300:900, 1200:2557),] # I begin here # I generate a variable with all the months x2 <- seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 month") # I add this variable with all the months to the available data to have information also for missing months dt <- rbind(dt, data.frame(d=x2, obs = rep(NA, length(x2)), total=rep(NA, length(x2)))) # I sum month per month o1 <- with(dt, rowsum(obs, format(d,"%Y-%m"), na.rm=TRUE)) o2 <- with(dt, rowsum(total, format(d,"%Y-%m"), na.rm=TRUE)) # If total for a month is 0, I replace it with NA o1[o2==0] <- NA o2[o2==0] <- NA # proportion y <- o1/o2 # plot plot(x2, y, bty="n", type="p", xaxt="n", las=1) axis(1, at=seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 month"), label=FALSE) axis(1, at=seq(from=as.Date("2000-01-01"), to=as.Date("2006-12-31"), by="1 year"), lwd.ticks=2, label=FALSE, lwd=0) axis(1, at=seq(from=as.Date("2000-07-01"), to=as.Date("2006-12-31"), by="1 year"), lwd.ticks=0, label=c(2000:2006), lwd=0) -- __________________________________________________________ Marc Girondot, Pr Laboratoire Ecologie, Syst?matique et Evolution Equipe de Conservation des Populations et des Communaut?s CNRS, AgroParisTech et Universit? Paris-Sud 11 , UMR 8079 B?timent 362 91405 Orsay Cedex, France Tel: 33 1 (0)1.69.15.72.30 Fax: 33 1 (0)1.69.15.73.53 e-mail: marc.girondot at u-psud.fr Web: http://www.ese.u-psud.fr/epc/conservation/Marc.html Skype: girondot