[R] Differencing data by groups
jim holtman
jholtman at gmail.com
Sat Oct 13 04:55:07 CEST 2007
What problem are you actually having with 'diff'? Now if you are using
'diff', you will get a vector that is shorter by one than the
original. Now do you want to do do something like:
Xbar = Sum{c(Depth[1], diff(Depth))*temp}/Sum(c(Depth[1], diff(Depth))
On 10/12/07, Thomas Miller <miller at cbl.umces.edu> wrote:
> Colleagues,
>
> I am analyzing data collected during oceanographic cruises. We have
> conducted many cruises over the last decade. On each cruise we visit ~50
> stations. At each station (termed EventNum)we lower an instrument that
> measures depth, temperature, salinity and oxygen every few seconds as it is
> lowered through the water. Data from all EventNums on all cruises are
> stacked, generating a data file that might look like
>
> CruiseID Year Season EventNum Region Depth Salinity Temp Oxygen
> 1 CF0101 2001 Spring 849 Lower 0.056 21.1753 15.5626 8.12344
> 2 CF0101 2001 Spring 849 Lower 0.103 21.3264 15.5511 8.11873
> 3 CF0101 2001 Spring 849 Lower 0.131 21.4780 15.5492 8.10568
> 4 CF0101 2001 Spring 849 Lower 0.169 21.5296 15.5492 8.10633
> ....
>
> 15000 CF0103 2001 Fall 929 Mid 14.449 17.692 22.901 7.743
> 15001 CF0103 2001 Fall 929 Mid 14.478 17.691 22.900 7.743
> 15002 CF0103 2001 Fall 929 Mid 14.527 17.692 22.899 7.743
> 15003 CF0103 2001 Fall 929 Mid 14.595 17.692 22.900 7.743
> 15004 CF0103 2001 Fall 929 Mid 14.654 17.694 22.902 7.742
> 15005 CF0103 2001 Fall 929 Mid 14.722 17.695 22.903 7.742
> 15006 CF0103 2001 Fall 929 Mid 14.790 17.695 22.903 7.742
> 15007 CF0103 2001 Fall 929 Mid 14.839 17.694 22.903 7.742
> 15008 CF0103 2001 Fall 929 Mid 14.887 17.695 22.902 7.742
> 15009 CF0103 2001 Fall 929 Mid 14.946 17.694 22.902 7.742
> 15010 CF0103 2001 Fall 929 Mid 14.985 17.693 22.902 7.743
> ......
>
> In total there are ~350k rows of data
>
> I can calculate simple EventNum averages using
>
> meanobs<-aggregate(ctd[,7:9],by=list(EventNum=EventNum),mean)
>
> But, I want to calculate a depth-weighted mean for salinity, temp and oxygen
> for each EventNum. The depth-weighted mean is calculated as
>
> Xbar = Sum{depth_interval*temp}/Sum(depth_intervals)
>
> Where the depth interval is the differenced depths (i.e., 0.103-0.056 for
> the second row of data).
>
> I cannot seem to get diff to work the way I want it to - advice appreciated
>
> Tom
>
> Thomas J. Miller, Ph.D.
> Professor
> Chesapeake Biological Laboratory
> University of Maryland Center for Environmental Science
> Solomons, MD 20688
> Tel: (410) 326-7276
> Fax: (410) 326-7318
> WWW: hjort.cbl.umces.edu
>
> ______________________________________________
> 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
More information about the R-help
mailing list