我是 R 的初学者,我正在尝试使用 R 语言中的Thin Plate Spline图以网格格式提取数据。基本上我有一个来自英国各地的点数据集,包含特定日的经度,纬度和降雨量。使用以下代码,我可以将这些数据绘制到英国地图上:
dat <- read.table("~jan1.csv", header=T, sep=",")
names(dat) <- c("gauge", "date", "station", "mm", "lat", "lon", "location", "county", "days")
library(fields)
quilt.plot(cbind(dat$lon,dat$lat),dat$mm)
world(add=TRUE)
到目前为止一切顺利。我也可以使用:
执行薄板样条插值(TPS)fit <- Tps(cbind(dat$lon, dat$lat), dat$mm, scale.type="unscaled")
然后我可以按照我选择的网格尺度进行表面绘图,例如:
surface (fit, nx=100, ny=100)
这有效地为我提供了分辨率为100 * 100的网格化数据图。所以这是我的问题:
如何从此网格化数据集中提取数据(即实际值)以放入excel或.txt等文件中?
我如何更改网格大小,以便网格以我选择的步骤以特定的x值(和y值)开始?
答案 0 :(得分:0)
使用predict
功能,典型的策略是使用以下内容:
rnglat <- range(dat$lat)
rnglon <- range(dat$lon)
xvals <- seq(rnglon[1], rnglon[2], len=100)
yvals <- seq(rnglat[1], rnglat[2], len=100)
griddf <- expand.grid(xvals, yvals)
griddf$pred <- predict(fit, x=as.matrix(griddf) )
(由于Tps
不使用公式界面且predict.Krig
似乎没有使用newdata
参数,我不是以一种适用于大多数回归问题。)如果要将范围缩小到小于整个范围或更改“网格线”的数量,则修改seq
参数。 (使用fit0
- 在字段:: predict.Krig帮助页面上的最后一个示例中构建的对象进行测试。)