You probably want:

write.table(x, file = as.character(x$mon[1L]))

because 'input$mon[1]' will always pick the same month (first one in
'input')


Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.


On Wed, Jun 18, 2014 at 10:48 AM, Thomas Barningham <stbarningham@gmail.com>
wrote:

> Hi David,
>
> Thank you for your help. The code you supplied is working, to an
> extent. However, i'm only outputting the first monthly file into my
> working directory.
>
> Apologies as I'm a relatively new to R, so please bear with my
> ignorance, have I not set up a loop correctly? Also, what is the
> purpose of the function(x) argument within the lapply function?
>
> Here's what I have now:
>
> > input <- read.table("BHD_APO.txt", header=TRUE)
> > head(input)
>       Date     APO
> 1 1999.479 -168.48
> 2 1999.479 -158.08
> 3 1999.480 -163.79
> 4 1999.480 -164.38
> 5 1999.480 -173.94
> 6 1999.480 -161.92
> >
> > ##### This package and the "date_decimal" function reads my decimal date
> correctly
> > library(lubridate)
> >
> > input$date <- date_decimal(input$Date)
> > input$mon <- cut(input$date, breaks="month")
> > head(input)
>       Date     APO                date        mon
> 1 1999.479 -168.48 1999-06-25 00:01:51 1999-06-01
> 2 1999.479 -158.08 1999-06-25 00:16:50 1999-06-01
> 3 1999.480 -163.79 1999-06-25 00:31:52 1999-06-01
> 4 1999.480 -164.38 1999-06-25 01:01:56 1999-06-01
> 5 1999.480 -173.94 1999-06-25 01:16:58 1999-06-01
> 6 1999.480 -161.92 1999-06-25 01:31:57 1999-06-01
> > lapply(split(input, input$mon), function(x)
> + write.table(x, file=as.character(input$mon[1])))
> $`1999-06-01`
> NULL
>
> $`1999-07-01`
> NULL
>
>
> The $ "date" NULL then repeats for all months.
>
> Many thanks
> Thomas
>
> On Tue, Jun 17, 2014 at 9:35 PM, David Winsemius <dwinsemius@comcast.net>
> wrote:
> >
> > 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
> >
>
>
>
> --
> Thomas Barningham
> Centre for Ocean and Atmospheric Sciences
> School of Environmental Sciences
> University of East Anglia
> Norwich Research Park
> Norwich
> NR4 7TJ
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]

