Ryan Poole
2011-Mar-02 21:58 UTC
[R] looping through data in sections and performing a function on each one
Hi,
I have a series of data (y) against the time of day (x), for simplicity
consider:
x=c(0,1,2,3,4,5,6,7,8,9,10)
y=c(0,1,2,3,0,-1,-2,1,2,1,0)
I wish to loop through the y values and and at the point where they touch or
cross the x axis, subtract the previous times of day from this point, and
calculate the y weighted average time for this interval. The loop then needs to
continue to the next interval bounded by the points where y=0 and do the same. I
will finally take the arithmetic average all of these to come up with an average
value of time.
To clarify by considering the simplified values above, the program needs to
return:
(4*0+3*1+2*2+1*3)/(0+1+2+3) = 1.66
(3*0+2*1+1*2)/(0+1+2)=1.33
(2*2+1*1)/(2+1)=1.66
returning an average time of 1.55
the final value of the sequence is always 0.
considering just the first interval i could use something like
for(i in 1:length(x))print(abs(y[i])*x[length(x)]-x[i])
but how do I sum over these values and divide by the sum of the y values in that
interval? Secondly how do I continue iterating through the data over each
subsequent interval? I have found this fairly easy to code in Fortran but I need
to do it in R which is relatively new to me. Any suggestions on improving the
method would also be appreciated if it is over complicating things
Many thanks,
Ryan
[[alternative HTML version deleted]]
