[R] How to create gridded data
MacQueen, Don
m@cqueen1 @ending from llnl@gov
Wed Nov 14 17:48:55 CET 2018
Sarah's answer is probably the best approach, but to do it using very basic R methods that predate the very good spatial support that R now has, I would likely do this:
## Thanks, Jim Lemon, for this step:
df1 <- read.table(text=
"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",
header=TRUE)
## first sort
df1 <- df1[order(df1$latitude, df1$longitude) , ]
## convert vector of precipitations to matrix
df2 <- matrix(df1$Precip, nrow=length(unique(df1$latitude)), byrow=TRUE)
## reorder the latitudes (rows)
df2 <- df2[ nrow(df2):1 , ]
## > df2
## [,1] [,2] [,3] [,4]
## [1,] 6.1 4.5 7.8 5.5
## [2,] 3.2 5.0 1.8 2.0
## From the original question:
## DF2
## 6.1 4.5 7.8 5.5
## 3.2 5.0 1.8 2.0
## ...
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509
On 11/13/18, 8:50 PM, "R-help on behalf of lily li" <r-help-bounces using r-project.org on behalf of chocold12 using gmail.com> wrote:
Thanks, Sarah's answer helps the question. Now how to change the gridded
data back to DF1 format? I don't know how to name the format, thanks.
On Tue, Nov 13, 2018 at 10:56 PM David L Carlson <dcarlson using tamu.edu> wrote:
> 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-bounces using r-project.org> On Behalf Of Sarah Goslee
> Sent: Tuesday, November 13, 2018 8:16 AM
> To: lily li <chocold12 using gmail.com>
> Cc: r-help <r-help using 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 <chocold12 using 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 using 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.
>
[[alternative HTML version deleted]]
______________________________________________
R-help using 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.
More information about the R-help
mailing list