Re: [R] Point pattern to grid

2005-11-18 Thread Roger Bivand
On Thu, 17 Nov 2005, Leaf Sun wrote:

 Dear all,
 
 I'd like to change a point pattern to a grid of cells and use one of the
 variables as the output.
 
 e.g.  The point pattern is of a window of (500*500) and several features
 such as pH, SoilType etc.  I like to divide it into a grid with cell
 size 5*5, and use the mean of the point values falling inside the cell
 as the output.
 
 Is there any package in R working with this? Thanks in advance!

This might have been better posted on R-sig-geo. Try this:

library(sp)
df1 - data.frame(x=runif(1,0,500), y=runif(1,0,500),
  z=rnorm(1))
coordinates(df1) - c(x, y)
summary(df1) # SpatialPointsDataFrame
grd - GridTopology(c(2.5,2.5), c(5,5), c(100,100))
sgrd - SpatialGrid(grd) #SpatialGrid
bbox(sgrd)
res - overlay(sgrd, df1)
# find which grid cells the points are in
str(res)
try0 - lapply(split(as(df1, data.frame), res), mean)
# take means by grid cell - assumes all numeric columns in df1
# (soil type??) - maybe write a custom function to handle non-numeric 
# columns sensibly
try01 - vector(mode=list, length=prod(slot(slot(sgrd, grid),
  cells.dim)))
nafill - rep(as.numeric(NA), ncol(as(df1, data.frame)))
try01 - lapply(try01, function(x) nafill)
# make a container to put the means in with the right number of columns
try01[as.integer(names(try0))] - try0
# insert means into correct list elements
try1 - data.frame(t(data.frame(try01)))
# transpose
summary(try1)
sgrd1 - SpatialGridDataFrame(slot(sgrd, grid), try1)
image(sgrd1, x)
image(sgrd1, y)
image(sgrd1, z)

It goes a bit further than the short description of the sp package in the 
latest R-News, and will most likely be a new method for overlay in sp. If 
these are your 200K points, it may take a little longer ...

 
 Cheers,
 
 Leaf
 
 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: [EMAIL PROTECTED]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] Point pattern to grid

2005-11-18 Thread Leaf Sun
Hi Roger,

Thanks again for your kind help.

Yes, I still use the 200K points data applying this program but the good thing 
is  I found it finished in no time.

The questions again here are:

1)   try0 - lapply(split(as(df1, data.frame), res), mean)  

When I tried to replace mean to sum, error looks like this:

Error in [EMAIL PROTECTED], i, drop = FALSE] : undefined columns selected 

2) If I just need to know the number of points in each cells, how can I modify 
the codes. The codes still a bit beyond me.

Thanks!

Leaf

=== At 2005-11-18, 01:39:05 you wrote: ===

On Thu, 17 Nov 2005, Leaf Sun wrote:

 Dear all,
 
 I'd like to change a point pattern to a grid of cells and use one of the
 variables as the output.
 
 e.g.  The point pattern is of a window of (500*500) and several features
 such as pH, SoilType etc.  I like to divide it into a grid with cell
 size 5*5, and use the mean of the point values falling inside the cell
 as the output.
 
 Is there any package in R working with this? Thanks in advance!

This might have been better posted on R-sig-geo. Try this:

library(sp)
df1 - data.frame(x=runif(1,0,500), y=runif(1,0,500),
  z=rnorm(1))
coordinates(df1) - c(x, y)
summary(df1) # SpatialPointsDataFrame
grd - GridTopology(c(2.5,2.5), c(5,5), c(100,100))
sgrd - SpatialGrid(grd) #SpatialGrid
bbox(sgrd)
res - overlay(sgrd, df1)
# find which grid cells the points are in
str(res)
try0 - lapply(split(as(df1, data.frame), res), mean)
# take means by grid cell - assumes all numeric columns in df1
# (soil type??) - maybe write a custom function to handle non-numeric 
# columns sensibly
try01 - vector(mode=list, length=prod(slot(slot(sgrd, grid),
  cells.dim)))
nafill - rep(as.numeric(NA), ncol(as(df1, data.frame)))
try01 - lapply(try01, function(x) nafill)
# make a container to put the means in with the right number of columns
try01[as.integer(names(try0))] - try0
# insert means into correct list elements
try1 - data.frame(t(data.frame(try01)))
# transpose
summary(try1)
sgrd1 - SpatialGridDataFrame(slot(sgrd, grid), try1)
image(sgrd1, x)
image(sgrd1, y)
image(sgrd1, z)

It goes a bit further than the short description of the sp package in the 
latest R-News, and will most likely be a new method for overlay in sp. If 
these are your 200K points, it may take a little longer ...

 
 Cheers,
 
 Leaf
 
 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: [EMAIL PROTECTED]


= = = = = = = = = = = = = = = = = = = =

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Re: [R] Point pattern to grid

2005-11-18 Thread Roger Bivand
On Fri, 18 Nov 2005, Leaf Sun wrote:

 Hi Roger,
 
 Thanks again for your kind help.
 
 Yes, I still use the 200K points data applying this program but the good
 thing is I found it finished in no time.

The reply is on R-sig-geo.

 
 The questions again here are:
 
 1)   try0 - lapply(split(as(df1, data.frame), res), mean)  
 
 When I tried to replace mean to sum, error looks like this:
 
 Error in [EMAIL PROTECTED], i, drop = FALSE] : undefined columns selected 
 
 2) If I just need to know the number of points in each cells, how can I 
 modify the codes. The codes still a bit beyond me.
 
 Thanks!
 
 Leaf
 
 === At 2005-11-18, 01:39:05 you wrote: ===
 
 On Thu, 17 Nov 2005, Leaf Sun wrote:
 
  Dear all,
  
  I'd like to change a point pattern to a grid of cells and use one of the
  variables as the output.
  
  e.g.  The point pattern is of a window of (500*500) and several features
  such as pH, SoilType etc.  I like to divide it into a grid with cell
  size 5*5, and use the mean of the point values falling inside the cell
  as the output.
  
  Is there any package in R working with this? Thanks in advance!
 
 This might have been better posted on R-sig-geo. Try this:
 
 library(sp)
 df1 - data.frame(x=runif(1,0,500), y=runif(1,0,500),
   z=rnorm(1))
 coordinates(df1) - c(x, y)
 summary(df1) # SpatialPointsDataFrame
 grd - GridTopology(c(2.5,2.5), c(5,5), c(100,100))
 sgrd - SpatialGrid(grd) #SpatialGrid
 bbox(sgrd)
 res - overlay(sgrd, df1)
 # find which grid cells the points are in
 str(res)
 try0 - lapply(split(as(df1, data.frame), res), mean)
 # take means by grid cell - assumes all numeric columns in df1
 # (soil type??) - maybe write a custom function to handle non-numeric 
 # columns sensibly
 try01 - vector(mode=list, length=prod(slot(slot(sgrd, grid),
   cells.dim)))
 nafill - rep(as.numeric(NA), ncol(as(df1, data.frame)))
 try01 - lapply(try01, function(x) nafill)
 # make a container to put the means in with the right number of columns
 try01[as.integer(names(try0))] - try0
 # insert means into correct list elements
 try1 - data.frame(t(data.frame(try01)))
 # transpose
 summary(try1)
 sgrd1 - SpatialGridDataFrame(slot(sgrd, grid), try1)
 image(sgrd1, x)
 image(sgrd1, y)
 image(sgrd1, z)
 
 It goes a bit further than the short description of the sp package in the 
 latest R-News, and will most likely be a new method for overlay in sp. If 
 these are your 200K points, it may take a little longer ...
 
  
  Cheers,
  
  Leaf
  
  
 
 -- 
 Roger Bivand
 Economic Geography Section, Department of Economics, Norwegian School of
 Economics and Business Administration, Helleveien 30, N-5045 Bergen,
 Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
 e-mail: [EMAIL PROTECTED]
 
 
 = = = = = = = = = = = = = = = = = = = =
 
 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: [EMAIL PROTECTED]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


[R] Point pattern to grid

2005-11-17 Thread Leaf Sun
Dear all,

I'd like to change a point pattern to a grid of cells and use one of the 
variables as the output.

e.g.  The point pattern is of a window of (500*500) and several features such 
as pH, SoilType etc.  I like to divide it into a grid with cell size 5*5, and 
use the mean of the point values falling inside the cell as the output.

Is there any package in R working with this? Thanks in advance!

Cheers,

Leaf

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html