Sarah's answer is probably better depending on what you want to do with the 
resulting data, but here's a way to go from your original DF1 to DF2:

> DF1 <- structure(list(latitude = c(45.5, 45.5, 45.5, 45.5, 46, 46, 46, 
+         46), longitude = c(110.5, 111, 111.5, 112, 110.5, 111, 111.5, 
+         112), Precip = c(3.2, 5, 1.8, 2, 6.1, 4.5, 7.8, 5.5)),
+         class = "data.frame", row.names = c(NA, -8L))
> 
# Convert to table with xtabs()
> DF2 <- xtabs(Precip~latitude+longitude, DF1)
> 

# Reverse the order of the latitudes
> DF2 <- DF2[rev(rownames(DF2)), ]
> DF2
        longitude
latitude 110.5 111 111.5 112
    46     6.1 4.5   7.8 5.5
    45.5   3.2 5.0   1.8 2.0

# Convert to a data frame
> DF2 <- as.data.frame.matrix(DF2)
> DF2
     110.5 111 111.5 112
46     6.1 4.5   7.8 5.5
45.5   3.2 5.0   1.8 2.0

----------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77843-4352


-----Original Message-----
From: R-help <r-help-boun...@r-project.org> On Behalf Of Sarah Goslee
Sent: Tuesday, November 13, 2018 8:16 AM
To: lily li <chocol...@gmail.com>
Cc: r-help <r-help@r-project.org>
Subject: Re: [R] How to create gridded data

If you want an actual spatial dataset, the best place to ask is R-sig-geo

R has substantial capabilities for dealing with gridded spatial data,
including in the sp, raster, and sf packages.

Here's one approach, creating a SpatialGridDataFrame, which can be
exported in any standard raster format using the rgdal package.

DF2 <- DF1
coordinates(DF2) <- ~longitude + latitude
gridded(DF2) <- TRUE
fullgrid(DF2) <- TRUE

I recommend Roger Bivand's excellent book:
https://www.springer.com/us/book/9781461476177

and there are abundant web tutorials.

Sarah
On Tue, Nov 13, 2018 at 2:22 AM lily li <chocol...@gmail.com> wrote:
>
> Hi R users,
>
> I have a question about manipulating data. For example, I have DF1 as the
> following, how to transform it to a gridded dataset DF2? In DF2, each value
> Precip is an attribute of the corresponding grid cell. So DF2 is like a
> spatial surface, and can be imported to ArcGIS. Thanks for your help.
>
> DF1
> latitude   longitude   Precip
> 45.5           110.5         3.2
> 45.5           111            5.0
> 45.5           111.5         1.8
> 45.5           112            2.0
> 46              110.5         6.1
> 46              111            4.5
> 46              111.5         7.8
> 46              112            5.5
> ...
>
>
> DF2
> 6.1   4.5   7.8   5.5
> 3.2   5.0   1.8   2.0
> ...
>


-- 
Sarah Goslee (she/her)
http://www.numberwright.com

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to