[R-sig-Geo] spatialgridataframes
Edzer Pebesma
edzer.pebesma at uni-muenster.de
Sun Feb 20 21:50:33 CET 2011
Lyndon, the original question was about removing a particular level in a
factor variable. The answer you gave seems to work for numeric variables
only (funny enough, soil in meuse.grid is a numeric variable!), and
package raster doesn't seem to deal well with factors (although coercion
to raster does not complain). Building on your example:
meuse.grid$soilf = factor(meuse.grid$soil, labels=c("cl1","cl2","cl3"))
m2 <- as(meuse.grid, "SpatialGridDataFrame")
m3 <- raster(m2, layer = "soilf") # Convert soilf factor to raster
plot(m3)
It seems that here, the factor levels are lost, as well as the knowledge
that this was a factor, at least it is lost when converted back to a
SpatialGridDataFrame.
Function factor can be used to change factors, or factor levels, or
remove some, as in:
meuse.grid$soilf2 = factor(meuse.grid$soilf,
levels=levels(meuse.grid$soilf)[1:2])
Working with factors converted to numeric values in linear regression
models typically leads to plain wrong results.
On 02/20/2011 05:44 PM, Lyndon Estes wrote:
> Hi Mary,
>
> This might help answer your questions. I used the meuse dataset and
> converted to raster formats, but I think the general approach should
> work for what you want to do.
>
> library(raster)
> library(gstat)
> data(meuse.grid)
> coordinates(meuse.grid) = ~x+y
> gridded(meuse.grid) = TRUE
> class(meuse.grid)
> m2 <- as(meuse.grid, "SpatialGridDataFrame")
> m3 <- raster(m2, layer = "soil") # Convert soil classes to raster
>
>>
>> Question1.
>> How can i remove the ninth class in R because it does not have to be included in
>> geostatical analysis.
>
> m4 <- m3 * ((m3 < 3) / (m3 < 3)) # Removes class 3 from soil,
> converts it to NA values (this could also
> # serve as a mask)
>
> # If you want to keep that part of the grid in the analysis, then you
> might want to collapse the one class
> # into another
> m5 <- (m3 == 3 | m3 == 2) * 2 + (m3 == 1) # Class 2 now includes 2 and 3
>
>> Question 2
>> how can i use the map created in Q1 to clip the other 5 aboventioned maps (eg
>> DEM etc) or how can i create a mask from the map in Q1.
>>
>
>
> # Create a mask for just the area of soil class 1
> sc1.mask <- (m3 == 1) / (m3 == 1)
>
> # You then multiply your other rasters by your mask to reduce rasters
> to the areas you want to analyze.
>
> Cheers, Lyndon
>
> _______________________________________________
> 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