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@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.pebe...@wwu.de _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo