如何从R语言的薄板样条(TPS)图中导出数据?

时间:2013-10-21 03:33:39

标签: r dataset export-to-csv

我是 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的网格化数据图。所以这是我的问题:

  1. 如何从此网格化数据集中提取数据(即实际值)以放入excel或.txt等文件中?

  2. 我如何更改网格大小,以便网格以我选择的步骤以特定的x值(和y值)开始?

1 个答案:

答案 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帮助页面上的最后一个示例中构建的对象进行测试。)