[R] Latex: Date Format conversion

Marc Schwartz marc_schwartz at me.com
Thu Jun 10 19:19:40 CEST 2010


Felipe,

I would not do the processing in TeX, but do it in R and then pass the results to the \Sexpr{}'s.

If I am correctly understanding the process flow, put the following R code chunk before the point where you need to output the formatted dates:

<<results=hide>>

  START <- format(as.Date(report[1, 1], "%m/%d/%y"), "%B %d, %Y")
  END <- format(as.Date(report[1, 15], "%m/%d/%y"), "%B %d, %Y")

@


Then have the following in the document body:

 Report from \Sexpr{START} & - & \Sexpr{END]} 


To take an example of your two dates below:

> format(as.Date("6/1/10", "%m/%d/%y"), "%B %d, %Y")
[1] "June 01, 2010"

> format(as.Date("6/15/10", "%m/%d/%y"), "%B %d, %Y")
[1] "June 15, 2010"


See ?as.Date for more information.

Note, that one possible complication is that if the dates in Excel are stored as dates and not as text, that is they are exported as numbers to R, pay close attention to the last example in ?as.Date. If this is the case, then you will need to modify the R code chunk above as per the examples on the help page, to correctly convert the numbers to R's date type and then format the result as you desire.

HTH,

Marc

On Jun 10, 2010, at 11:37 AM, Felipe Carrillo wrote:

> 
>  Marc:
> My report is done every two weeks and is created automatically.
> I click a command button on an Excel form and it runs a .rnw script 
> in R creating a latex dynamic report. Excel sends 15 days of data
> to R, eg: 6/1/10 to 6/15/10. Right above my report I usually write the range
> of the report manually, something like "Report from 6/1/10 - 6/15/10" so
> I want to see if latex can select that range of dates dynamically because my
> report dates are constantly changing. I would like latex to look at the beginning 
> and last date of my report and fill out the dates on the fly. I can do this easily with
> the following: 
> Report from \Sexpr{report[1,1]} & - & \Sexpr{report[1,15]} 
> and it prints the correct values:
> Report from 6/1/10 - 6/15/10
> But I want those values formatted like this:
> Report from June 01, 2010 - June 15, 2010
> I am looking for a latex command to convert the dates, something like this pseudo-code:
> Report from \longdate\Sexpr{report[1,1]} & - & \longdate\Sexpr{report[1,15]} 
> Where long date will be the format that converts 6/1/10 to June 01, 2010
> Thanks for helping.
>



More information about the R-help mailing list