You can use the approx() function (in that stats package) to put 5 equally spaced times between your high and low water times. E.g., in the following 'tmp' will be your interpolated times, in seconds since 1970, which I clumsily convert to POSIX times (I can never remember how to deal with time zones so I make everything use UTC).
> tmp <- with(myframe2, approx(x=seq(1, by=6, length.out=length(Timestamp)), > y=as.numeric(Timestamp), > xout=seq(1,by=1,length.out=6*(length(Timestamp)-1)+1))$y) > as.POSIXct(i, origin="1970-01-01 00:00", tz="UTC") [1] "2013-08-02 22:10:00 UTC" "2013-08-02 23:09:00 UTC" [3] "2013-08-03 00:08:00 UTC" "2013-08-03 01:07:00 UTC" [5] "2013-08-03 02:06:00 UTC" "2013-08-03 03:05:00 UTC" [7] "2013-08-03 04:04:00 UTC" "2013-08-03 05:06:20 UTC" [9] "2013-08-03 06:08:40 UTC" "2013-08-03 07:11:00 UTC" [11] "2013-08-03 08:13:20 UTC" "2013-08-03 09:15:40 UTC" [13] "2013-08-03 10:18:00 UTC" > diff(.Last.value) Time differences in mins [1] 59.00000 59.00000 59.00000 59.00000 59.00000 59.00000 62.33333 62.33333 [9] 62.33333 62.33333 62.33333 62.33333 Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Dec 3, 2015 at 2:51 AM, Dagmar <ramga...@gmx.net> wrote: > Hello, > I hope someone can help me with my problem: > I have a dataframe like this: > > datframe <- data.frame(dates=c("02.08.2013","03.08.2013","03.08.2013"), > times =c("22:10","4:04", "10:18"), tide =c("NW","HW", "NW")) > datframe > Timestamp <- paste(datframe$dates, datframe$times) > myframe2 <- cbind( Timestamp,datframe) > head(myframe2) > myframe2$dates <- NULL > myframe2$times <- NULL > myframe2$Timestamp <- as.POSIXct (strptime(myframe2$Timestamp, "%d.%m.%Y > %H:%M"), tz="GMT") > head(myframe2) > str(myframe2) > > # In the end I want a frame like this: > datframeres <- data.frame(Timestamp=c("2013-08-02 22:10:00", "2013-08-02 > 23:09:00","2013-08-03 00:08:00","2013-08-03 01:07:00", "2013-08-03 > 02:06:00", "2013-08-03 03:05:00", > "2013-08-03 04:04:00","2013-08-03 05:06:20","2013-08-03 06:08:40", > "2013-08-03 07:11:00", "2013-08-03 08:13:20", "2013-08-03 09:15:40", > "2013-08-03 10:18:00") > , tidalclass =c("NW", "HW-5","HW-4", "HW-3", "HW-2", "HW-1", "HW", > "HW+1","HW+2","HW+3", "HW+4","HW+5", "NW")) > > datframeres > > # That means: I want to expand to 13 classes instead of the two classes "HW" > and "NW": "HW", "HW+1", "HW+2" and so on. > # The time gap between HW and NW is not always quite the same (always around > 6 hours). So I would divide the time gap by 6 and add this number (0:59 and > 1:02:20 respectively) to the timestamp before. > # I do not know how to do this. Does anyone know how to do this? Many thanks > in advance! > Tagmarie > > ______________________________________________ > 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. ______________________________________________ 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.