2013-10-21 33 views
0

我是R的初學者,我試圖從R語言中的薄板樣條曲線圖中提取網格格式的數據。基本上,我有一個來自英國各地的數據集,其中包含特定日期的經度,緯度和降雨量。使用下面的代碼我可以將這些數據繪製到英國地圖上:如何從R語言的薄板樣條曲線(TPS)圖輸出數據?

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值)開始?

+0

歡迎來到SO。發佈問題時通常會提到一個問題,即提及哪些軟件包用於解決特定問題,並共享一些示例數據,以顯示您已取得的成就以及您所處的位置。請相應地編輯您的問題。 – A5C1D2H2I1M1N2O1R2T1

回答

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對象進行測試 - 在fields :: predict.Krig幫助頁上的最後一個示例中構建的對象)。

+0

好極了 - 通過輸入'griddf'和'griddf $ pred',它給了我所選網格上的值。你知道我怎樣才能得到完全相同數據的表面圖(即使用'xvals'和'yvals'的網格表面圖?)。我嘗試打字表面(適合,x = as.matrix(griddf)),但這並沒有給我相同的網格大小。 – user2901667