Your data has 45 points which aren't on a regular X-Y grid. If you want to
make a regular raster grid then you've got to have some method for deciding
what value is at any arbitrary (x,y) location given your data. This is
"spatial interpolation" and there's a whole world of methods out
there for
this including inverse distance weighting, kriging, spline fitting... etc.
For example, using the `automap` package you can do a quick "ordinary
kriging":
First convert data frame to spatial points data frame:
> coordinates(Tuto)=~X+Y
Do everything:
> m = autoKrige(a~1, input_data=Tuto)
[using ordinary kriging]
plot results:
> plot(m)
This shows prediction and standard error of estimates of `a` over the space
given the spatial dependence in the variance of `a` shown in the lower
graph and the other aspects of the ordinary Kriging model.
Don't take this as The One Way To Do It though, review the literature on
spatial interpolation, define your reasoning for your model, and choose
code based on that. You'll possibly end up using the `gstat` package though.
Barry
On Tue, Mar 8, 2022 at 6:22 AM Eliza Botto <eliza_botto at outlook.com>
wrote:
> This email originated outside the University. Check before clicking links
> or attachments.
>
> deaR expeRts,
>
> I have the following data
>
> > dput(Tuto)
> structure(list(X = c(-114.028, -114.011, -114.442, -113.937,
> -114.187, -114.083, -113.949, -114.15, -114.068, -114.203, -113.958,
> -114.248, -114.18, -114.14, -114.071, -114.042, -114.187, -114.03,
> -113.97, -113.824, -114.084, -114.152, -114.468, -113.935, -113.994,
> -114.048, -114.188, -114.129, -114.071, -113.934, -114.001, -114.075,
> -114.121, -113.958, -114.039, -113.963, -114.062, -114.183, -114.118,
> -114.119, -113.954, -114.051, -113.988, -114.194, -114.025),
> Y = c(51.431, 51.279, 51.167, 51.165, 51.155, 51.14, 51.126,
> 51.126, 51.116, 51.115, 51.092, 51.091, 51.084, 51.082, 51.076,
> 51.069, 51.062, 51.052, 51.051, 51.048, 51.044, 51.039, 51.037,
> 51.034, 51.03, 51.029, 51.021, 51.006, 51.005, 50.99, 50.983,
> 50.966, 50.958, 50.948, 50.929, 50.916, 50.911, 50.908, 50.908,
> 50.907, 50.877, 50.877, 50.86, 50.854, 50.826), a = c(0.838,
> 0.901, 0.953, 0.902, 0.782, 0.938, 0.884, 0.879, 0.932, 0.947,
> 0.965, 0.828, 0.923, 0.892, 0.884, 0.897, 0.912, 0.988, 0.901,
> 0.855, 0.999, 0.846, 0.845, 0.798, 0.749, 0.753, 0.762, 0.646,
> 0.729, 0.544, 0.265, 0.449, 0.334, 0.36, 0.325, 0.337, 0.249,
> 0.114, 0.149, 0.173, 0.175, 0.184, 0.219, 0.106, 0.148),
> n = c(0.653, 0.625, 0.641, 0.63, 0.656, 0.619, 0.628, 0.634,
> 0.63, 0.604, 0.598, 0.617, 0.632, 0.635, 0.637, 0.646, 0.619,
> 0.613, 0.63, 0.615, 0.604, 0.639, 0.598, 0.593, 0.583, 0.606,
> 0.594, 0.653, 0.63, 0.577, 0.624, 0.626, 0.676, 0.641, 0.629,
> 0.579, 0.603, 0.607, 0.66, 0.614, 0.618, 0.574, 0.552, 0.62,
> 0.599)), row.names = c(19L, 22L, 18L, 3L, 45L, 20L, 14L,
> 43L, 40L, 44L, 37L, 12L, 42L, 41L, 39L, 38L, 33L, 8L, 36L, 16L,
> 32L, 31L, 5L, 34L, 35L, 9L, 13L, 30L, 29L, 4L, 24L, 27L, 28L,
> 23L, 25L, 21L, 26L, 6L, 15L, 2L, 1L, 7L, 11L, 10L, 17L), class >
"data.frame")
>
> In the given data,
>
> X-> Latitude
>
> Y-> Longitude
>
> a-> Factor 1
>
> n-> Factor 2
>
> I want to draw a raster map of these values within the following limits
> (xmn=-114.5, xmx=-113.7, ymn=50.800, ymx=51.600). I have tried through
> "raster" library but failed as I wasn't able to properly
generate the data.
> I will be thankful if I can get any kind of help. Thank-you very much in
> advance.
>
> Eliza
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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]]