[R] spped up a function
Santiago Guallar
sguallar at yahoo.com
Tue Jul 9 08:52:46 CEST 2013
Hi Petr, yes the function basically consists on merging two time series with different time intervals: one regular 'GPS' and one irregular 'xact' (the latter containing the binomial variable 'wd' that I want to add to 'GPS'.
Apparently my attachments did not go through. Here you have the dputs you requested plus the desired result based on them:
head(xact)
Ringjul timepos actwd
6106933 15135 2011-06-10 04:36:15 3822 dry
6106933 15135 2011-06-10 05:39:57 27 wet
6106933 15135 2011-06-10 05:40:24 60 dry
6106933 15135 2011-06-10 05:41:24 6 wet
6106933 15135 2011-06-10 05:41:30 753 dry
6106933 15135 2011-06-10 05:54:03 78 wet
6106933 15135 2011-06-10 05:55:21 15 dry
6106933 15135 2011-06-10 05:55:36 18 wet
head(GPS1, 16) and desired result (added column wd)
Ring jul timeposwd
5 6106933 15135 2011-06-10 04:39:00dry
6 6106933 15135 2011-06-10 04:44:00dry
7 6106933 15135 2011-06-10 04:49:00dry
8 6106933 15135 2011-06-10 04:54:00dry
9 6106933 15135 2011-06-10 04:59:00dry
10 6106933 15135 2011-06-10 05:04:00dry
11 6106933 15135 2011-06-10 05:09:00dry
12 6106933 15135 2011-06-10 05:13:00dry
13 6106933 15135 2011-06-10 05:18:00dry
14 6106933 15135 2011-06-10 05:23:00dry
15 6106933 15135 2011-06-10 05:28:00dry
16 6106933 15135 2011-06-10 05:33:00dry
17 6106933 15135 2011-06-10 05:38:00dry
18 6106933 15135 2011-06-10 05:43:00dry
19 6106933 15135 2011-06-10 05:48:00dry
20 6106933 15135 2011-06-10 05:53:00dry
Santi
>________________________________
> From: PIKAL Petr <petr.pikal at precheza.cz>
>To: Santiago Guallar <sguallar at yahoo.com>; r-help <r-help at r-project.org>
>Sent: Monday, July 8, 2013 11:34 AM
>Subject: RE: [R] spped up a function
>
>
>Hi
>
>It seems to me, that you basically want merge, but I can miss the point. Try post
>
>dput(head(xact))
>dput(head(GPS))
>
>and what shall be desired result based on those 2 datasets.
>
>Regards
>Petr
>
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Santiago Guallar
>> Sent: Tuesday, July 02, 2013 7:47 PM
>> To: r-help
>> Subject: [R] spped up a function
>>
>> Hi,
>>
>> I have written a function to assign the values of a certain variable
>> 'wd' from a dataset to another dataset. Both contain data from the
>> same time period but differ in the length of their time intervals:
>> 'GPS' has regular 10-minute intervals whereas 'xact' has
irregular
>> intervals. I attached simplified text versions from write.table. You
>> can also get a dput of 'xact' in this address:
>> http://www.megafileupload.com/en/file/431569/xact-dput.html).
>> The original objects are large and the function takes almost one hour
>> to finish.
>> Here's the function:
>>
>> fxG= function(xact, GPS){
>> l <- rep( 'A', nrow(GPS) )
>> v <- unique(GPS$Ring) # the process is carried out for several
>> individuals identified by 'Ring'
>> for(k in 1:length(v) ){
>> I = v[k]
>> df <- xact[xact$Ring == I,]
>> for(i in 1:nrow(GPS)){
>> if(GPS[i,]$Ring== I){# the code runs along the whole data.frame for
>> each i; it'd save time to make it stop with the last record of each i
>> instead u <- df$timepos <= GPS[i,]$timepos # fill vector l for each
>> interval t from xact <= each interval from GPS (take the max if
there's
>> > 1 interval) l[i] <- df[max( which(u == TRUE) ),]$wd } } } return(l)}
>>
>> vwd <- fxG(xact, GPS)
>>
>>
>> My question is: how can I speed up (optimize) this function?
>>
>> Thank you for your help
>
>
>
More information about the R-help
mailing list