An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140625/dc3d8633/attachment.pl>
matlab serial date to r
4 messages · Christoph Schlächter, Brian Ripley, Jeff Newmiller +1 more
See ?as.Date. I am guessing these are days and fractional days. Try x <- 7.356000000813091e5 as.POSIXct((x - 719529)*86400, origin = "1970-01-01")
On 25/06/2014 14:56, Christoph Schl?chter wrote:
Hi,
I have a matlab variable as serial date (class double) in the form
'dd-mmm-yyyy HH:MM:SS'.
format long
disp( tx(40:60,1) )
1.0e+05 *
7.356000000813091
7.356000000956856
7.356000001305921
7.356000001654985
7.356000002004049
7.356000002353113
7.356000002702178
7.356000003397179
7.356000004092182
7.356000004787183
7.356000005482185
7.356000006177187
7.356000006940080
7.356000007702975
7.356000008465869
7.356000009228763
7.356000009991657
7.356000010754551
7.356000011517445
7.356000012280339
7.356000013085329
It should be the same as
datestr( tx(40:60,1), 0)
01-Jan-2014 00:00:07
01-Jan-2014 00:00:08
01-Jan-2014 00:00:11
01-Jan-2014 00:00:14
01-Jan-2014 00:00:17
01-Jan-2014 00:00:20
01-Jan-2014 00:00:23
01-Jan-2014 00:00:29
01-Jan-2014 00:00:35
01-Jan-2014 00:00:41
01-Jan-2014 00:00:47
01-Jan-2014 00:00:53
01-Jan-2014 00:00:59
01-Jan-2014 00:01:06
01-Jan-2014 00:01:13
01-Jan-2014 00:01:19
01-Jan-2014 00:01:26
01-Jan-2014 00:01:32
01-Jan-2014 00:01:39
01-Jan-2014 00:01:46
01-Jan-2014 00:01:53
I can easily convert it with Matlab but then I will obtain a character
format which is useless. I can also make use of cellstr(datestr(tx(:,1),
0)) but then I can't save it in ASCII file.
The origin of the Matlab format is supposed to be "0000-00-00". This is the
only origin which results in "2014-01-01" which is my actual start date.
Can somebody please tell me how I can simply convert serial datetime to
datetime in R.
Thanks in advance.
All the best,
Christoph
[[alternative HTML version deleted]]
______________________________________________ R-help at 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.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
I think the character format for this data is the most versatile and clear option. You do have to prevent the R input function (read.csv? read.table?) from converting it to factor when you read it in, but then you can use as.POSIXct with a format argument (see ?strptime) to obtain useful timestamp values in R. You also need to be clear about time zones, but that is true regardless of the software you use.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
On June 25, 2014 6:56:38 AM PDT, "Christoph Schl?chter" <christoph.schlaechter at gmail.com> wrote:
Hi, I have a matlab variable as serial date (class double) in the form 'dd-mmm-yyyy HH:MM:SS'. format long disp( tx(40:60,1) ) 1.0e+05 * 7.356000000813091 7.356000000956856 7.356000001305921 7.356000001654985 7.356000002004049 7.356000002353113 7.356000002702178 7.356000003397179 7.356000004092182 7.356000004787183 7.356000005482185 7.356000006177187 7.356000006940080 7.356000007702975 7.356000008465869 7.356000009228763 7.356000009991657 7.356000010754551 7.356000011517445 7.356000012280339 7.356000013085329 It should be the same as datestr( tx(40:60,1), 0) 01-Jan-2014 00:00:07 01-Jan-2014 00:00:08 01-Jan-2014 00:00:11 01-Jan-2014 00:00:14 01-Jan-2014 00:00:17 01-Jan-2014 00:00:20 01-Jan-2014 00:00:23 01-Jan-2014 00:00:29 01-Jan-2014 00:00:35 01-Jan-2014 00:00:41 01-Jan-2014 00:00:47 01-Jan-2014 00:00:53 01-Jan-2014 00:00:59 01-Jan-2014 00:01:06 01-Jan-2014 00:01:13 01-Jan-2014 00:01:19 01-Jan-2014 00:01:26 01-Jan-2014 00:01:32 01-Jan-2014 00:01:39 01-Jan-2014 00:01:46 01-Jan-2014 00:01:53 I can easily convert it with Matlab but then I will obtain a character format which is useless. I can also make use of cellstr(datestr(tx(:,1), 0)) but then I can't save it in ASCII file. The origin of the Matlab format is supposed to be "0000-00-00". This is the only origin which results in "2014-01-01" which is my actual start date. Can somebody please tell me how I can simply convert serial datetime to datetime in R. Thanks in advance. All the best, Christoph [[alternative HTML version deleted]]
______________________________________________ R-help at 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.
Hi, May be this helps: dat <- read.table(text="7.356000000813091 ? 7.356000000956856 ? 7.356000001305921 ? 7.356000001654985 ? 7.356000002004049 ? 7.356000002353113 ? 7.356000002702178 ? 7.356000003397179 ? 7.356000004092182 ? 7.356000004787183 ? 7.356000005482185 ? 7.356000006177187 ? 7.356000006940080 ? 7.356000007702975 ? 7.356000008465869 ? 7.356000009228763 ? 7.356000009991657 ? 7.356000010754551 ? 7.356000011517445 ? 7.356000012280339 ? 7.356000013085329",sep="",header=F, colClasses="character") library(chron) t1 <- chron(1.0e+05 *as.numeric(dat[,1])) -719529 format(as.POSIXct(paste(as.Date(dates(t1)), times(t1)%%1)),"%m-%b-%Y %H:%M:%S") A.K.
On Wednesday, June 25, 2014 10:00 AM, Christoph Schl?chter <christoph.schlaechter at gmail.com> wrote:
Hi, I have a matlab variable as serial date (class double) in the form 'dd-mmm-yyyy HH:MM:SS'. format long disp( tx(40:60,1) ) 1.0e+05 * ? 7.356000000813091 ? 7.356000000956856 ? 7.356000001305921 ? 7.356000001654985 ? 7.356000002004049 ? 7.356000002353113 ? 7.356000002702178 ? 7.356000003397179 ? 7.356000004092182 ? 7.356000004787183 ? 7.356000005482185 ? 7.356000006177187 ? 7.356000006940080 ? 7.356000007702975 ? 7.356000008465869 ? 7.356000009228763 ? 7.356000009991657 ? 7.356000010754551 ? 7.356000011517445 ? 7.356000012280339 ? 7.356000013085329 It should be the same as datestr( tx(40:60,1), 0) 01-Jan-2014 00:00:07 01-Jan-2014 00:00:08 01-Jan-2014 00:00:11 01-Jan-2014 00:00:14 01-Jan-2014 00:00:17 01-Jan-2014 00:00:20 01-Jan-2014 00:00:23 01-Jan-2014 00:00:29 01-Jan-2014 00:00:35 01-Jan-2014 00:00:41 01-Jan-2014 00:00:47 01-Jan-2014 00:00:53 01-Jan-2014 00:00:59 01-Jan-2014 00:01:06 01-Jan-2014 00:01:13 01-Jan-2014 00:01:19 01-Jan-2014 00:01:26 01-Jan-2014 00:01:32 01-Jan-2014 00:01:39 01-Jan-2014 00:01:46 01-Jan-2014 00:01:53 I can easily convert it with Matlab but then I will obtain a character format which is useless. I can also make use of cellstr(datestr(tx(:,1), 0)) but then I can't save it in ASCII file. The origin of the Matlab format is supposed to be "0000-00-00". This is the only origin which results in "2014-01-01" which is my actual start date. Can somebody please tell me how I can simply convert serial datetime to datetime in R. Thanks in advance. All the best, Christoph ??? [[alternative HTML version deleted]] ______________________________________________ R-help at 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.