[R] Writing "monthly" .txt or .csv files from a long time series

David Winsemius dwinsemius at comcast.net
Tue Jun 17 22:35:16 CEST 2014


On Jun 17, 2014, at 5:00 AM, Thomas Barningham wrote:

> Dear R users,
> 
> I have a .txt file of time series data from the middle of 1999 through
> to the end of 2012. There are two columns in the file, the first is a
> decimal date, the second is an atmospheric tracer value and looks like
> this:
> 
> Date  APO
> 1999.47945560  -168.48
> 1999.47948410  -158.08
> 1999.47951270  -163.79
> 1999.47956990  -164.38
> 1999.47959850  -173.94
> 1999.47962700  -161.92
> 1999.47965560  -154.36
> 1999.47968420  -147.55
> 1999.47971280  -157.06
> 1999.47974140  -151.21
> 1999.47976990  -141.63
> 1999.47979850  -147.97
> 
> What I'd now like to do is write new .txt (or .csv) files based on the
> month of the year so that I have separate text files for Jan, Feb, Mar
> etc for each year 1999, 2000, 2001 etc. using either the write.table
> or write.csv function. Is there an easy way to do this in R?

There is a breaks argument to cut.POSIXt function that will accept "month" as an argument.
 With a suitable offset that 'Date' column looks like it would be suitable for `as.Date.numeric`.

Try something along these lines:

dat$dt <- as.Date(dat$Date)
dat$mon <- cut(dat$dt, breaks="month")
lapply( split(dat, dat$mon), function(dts) 
             write.csv( dts, file=as.character(dts$mon[1]) ))

> 
> Google key word searches have not been fruitful and the only other way
> I can see to do this is "manually" in excel, which would take a long
> time. I'm hoping there's a neat bit of code to do this.

The above seemed acceptably "neat" to me, although it remains only modestly tested.

-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list