我正在编写一个代码来计算美国本土不同地区的平均降水量。我的总数据有 300 乘以 120 (lon*lat) Netcdf 格式的网格。我想在 R 中编写一个循环来取每 10 x 10 个网格的平均值,并将该值(平均值)分配给区域内的所有网格,并为下一个区域重复此操作。最后,我将拥有 12 x 30 的网格,而不是 120 x 300 的网格。所以这是一种我想应用于我的数据的升级方法。我可以为每个区域分别使用一个 for 循环,但这使我的代码非常庞大,我不想这样做。任何想法将不胜感激。谢谢。PS:这是我为一个区域 (10by10) lat*lon 编写的函数。
upscaling <- function(file, variable, start.time=1, count.time=1)
{
library(ncdf) # load ncdf library to manipulate ncdf data
ncdata <- open.ncdf(file); # open ncdf file
lon <- get.var.ncdf(ncdata, "lon");
lat <- get.var.ncdf(ncdata, "lat");
time <- get.var.ncdf(ncdata, "time");
start.lon <- 1
end.lon <- length(lon)
start.lat <- 1
end.lat <- length(lat)
count.lon <- end.lon - start.lon + 1; # count number of longitude
count.lat <- end.lat - start.lat + 1; # count number of latitude
dat <- get.var.ncdf(ncdata, variable, start=c(start.lon, start.lat, 1),
count=c(count.lon, count.lat, 1))
temp.data<- array(0,dim=c(10,10))
for (i in 1:10)
{
for (j in 1:10)
{
temp.data <- mean(dat[i,j,])
}
}
}