> On Apr 4, 2017, at 8:51 AM, Tunga Kantarcı <tungakanta...@gmail.com> wrote:
> 
> I have a data frame. One column (call this column a) contains years,
> like 1871, and another column (call this column b) contains months,
> like 2. I need to convert these year-month combinations, stored in
> these two date vectors, into a single serial date number. E.g. year
> 1871 and month 2, stored in different vectors, should return 683429.
> Meanwhile, when I check the class type of columns a and b, they are
> both integer.
> 
> In MATLAB this can easily be done using the syntax
> 
> output = datenum(a,b,1)
> 
> In R, I have tried the as.POSIXct function but did not succeed. I also
> tried the ISOdatetime function but that returned NA for all entries.
> It should be a simple operation but I cannot seem to figure it out.

Hi,

The standard date classes in R require the full date (day, month, year) and the 
date/time classes require a correct time as well.

Looking at the help page for ?as.Date, there is information pertaining to 
MATLAB's date origin of 0000-01-01, as compared to R's of 1970-01-01. The 
difference is an offset of 719529.

Taking your number above of 683429, that would yield:

 > as.Date(683429, origin = "1970-01-01") - 719529
[1] "1871-03-01"

So your 'b' should be 3, not 2, presuming the first of the month is inferred. 
Otherwise:

> as.Date(683401, origin = "1970-01-01") - 719529
[1] "1871-02-01"

So, to reverse it, would be:

a <- 1871
b <- 3

> paste(a, b, 1, sep = "-")
[1] "1871-3-1"

> as.Date(paste(a, b, 1, sep = "-"))
[1] "1871-03-01"

> as.numeric(as.Date(paste(a, b, 1, sep = "-"))) + 719529
[1] 683429
  
The last step takes the date and coerces it to a numeric value in the number of 
days since the origin.

More generally, if you Google for R MATLAB, there are some online references 
that provide varying levels of function mappings between the two languages that 
you may find helpful.

Regards,

Marc Schwartz

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to