[R] expand dataframe but time gap is not the same

Dagmar Ramgad82 at gmx.net
Fri Dec 11 12:08:31 CET 2015


Hello Bill (and Petr and all),

Thank you very much! That was exactly what I was looking for! I could 
have never accomplished that on my own.

Have a great time,
Tagmarie

Am 09.12.2015 um 18:07 schrieb William Dunlap:
> 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 <Ramgad82 at 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 at 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.



More information about the R-help mailing list