[R-sig-Geo] Spatial Join - over and weighted mean

Els Ducheyne educheyne at avia-gis.be
Fri Mar 30 15:28:30 CEST 2012


Dear Edze
Thanks for your help
Best regards

On 30 Mar 2012, at 15:10, Edzer Pebesma wrote:

> 
> 
> On 03/30/2012 02:29 PM, Els Ducheyne wrote:
>> Dear Edzer
>> I have a point shapefile containing values of vaccination coverage (Z) estimated via a sample (SampleSize)
>> The aim is to obtain a weighted mean of vaccination coverage per admin unit
>> 
>> Below sample code
>> 
>>> studyzone <- readShapePoly(paste(backgroundfilesdir,"GDAM_studyzone.shp",sep=""))
>>> slot(studyzone,'data') <- as.data.frame(slot(studyzone,"data")$OBJECTID)
>>> names(slot(studyzone,'data')) <- c("OBJECTID")
>>> shapefilename <- paste(shapefiledir,shortNameIndicator,"_",production.date,sep="")
>>> point.shapefile <- readShapePoints(paste(shapefilename,".shp",sep=""))
>>> summary(point.shapefile)
>> Object of class SpatialPointsDataFrame
>> Coordinates:
>>            min   max
>> coords.x1   0.0 41.96
>> coords.x2 -11.1 16.73
>> Is projected: NA 
>> proj4string : [NA]
>> Number of points: 76
>> Data attributes:
>>       Id              Z            SampleSize    
>> Min.   : 1.00   Min.   :0.0400   Min.   : 388.0  
>> 1st Qu.:19.75   1st Qu.:0.2200   1st Qu.: 549.2  
>> Median :38.50   Median :0.4300   Median : 659.0  
>> Mean   :38.50   Mean   :0.5437   Mean   :1562.1  
>> 3rd Qu.:57.25   3rd Qu.:0.7450   3rd Qu.:2480.8  
>> Max.   :76.00   Max.   :2.4000   Max.   :6487.0  
>>                                  NA's   :   2.0  
>> 
>> 
>> For the moment I've used the following function to obtain the normal mean
>> aggregate.data<-over(studyzone,point.shapefile,fn=mean)
>> 
>> I know I should define the weighted.mean by weighted.mean(slot(point.shapefile,'data')$Z,slot(point.shapefile,'data')$SampleSize,na.rm=T) but how to include this in the over function is not clear to me
> 
> I don't think you can, as it takes two arguments that are both data
> columns. over() essentially applies fun() to each of the columns in the
> data.frame slot, but cannot combine two columns in a single function call.
> 
> You can pre-weight your values though, so that mean() results in the
> weighted mean you want.
> 
> To access slot(point.shapefile,'data')$Z it is recommended to use
> point.shapefile$Z
> 
>> 
>> Thanks for your help
>> Els
>> 
>> On 30 Mar 2012, at 14:17, Edzer Pebesma wrote:
>> 
>>> Els, what being weighted by what exactly? Any chance you can illustrate
>>> your problem by something we can reproduce?
>>> 
>>> On 03/30/2012 01:58 PM, Els Ducheyne wrote:
>>>> Dear R-SIG-GEO list
>>>> 
>>>> I want to aggregate the mean value of points in a polygon using the over function. 
>>>> #Read the shapefile with the measurements
>>>> shapefilename <- paste(shapefiledir,shortNameIndicator,"_",production.date,sep="")
>>>> point.shapefile <- readShapePoints(paste(shapefilename,".shp",sep=""))
>>>> names(slot(point.shapefile,'data')) <- c("ID",shortNameIndicator)
>>>> 
>>>> 
>>>> #aggregate per polygon by mean and save as shapefile
>>>> aggregate.data<-over(studyzone,point.shapefile,fn=mean)
>>>> row.names(aggregate.data) <- row.names(aggregate.data)
>>>> outPolDF <- SpatialPolygonsDataFrame(studyzone,aggregate.data,match.ID=T)
>>>> writePolyShape(outPolDF,paste(shapefiledir,shortNameIndicator,"_poly_",production.date,".shp",sep=""))
>>>> 
>>>> 
>>>> While this works using the mean function I am unsure how to proceed for a weighted mean - does anyone have a suggestion?
>>>> 
>>>> Many thanks
>>>> Els
>>>> 
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>> 
>>> -- 
>>> Edzer Pebesma
>>> Institute for Geoinformatics (ifgi), University of Münster
>>> Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
>>> 8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
>>> http://www.52north.org/geostatistics      e.pebesma at wwu.de
>>> 
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> 
>> 
> 
> -- 
> Edzer Pebesma
> Institute for Geoinformatics (ifgi), University of Münster
> Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
> 8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
> http://www.52north.org/geostatistics      e.pebesma at wwu.de



More information about the R-sig-Geo mailing list