[R] Please help
Pascal Oettli
kridox at ymail.com
Thu Jul 5 03:49:31 CEST 2012
Hello,
A short code to include real monthly calendar to your data, similar to
the one inside NCEP2 reanalysis.
library(ncdf)
lon <- seq(from=140.0251, to=146.6751, length.out=241)
lat <- seq(from=-38.975, to=-31.025, length.out=160)
x=dim.def.ncdf("Lon","degreesE",as.double(lon))
y=dim.def.ncdf("Lat","degreesN",as.double(lat))
y1 = 1800 # start of the period
y2 = 2012 # end of the period
year <- seq(y1,y2,1)
day <-
c(31,28,31,30,31,30,31,31,30,31,30,31)%*%matrix(1,1,length(year));
day[2,leap.year(year)] <- 29; day <- as.vector(day)
hour <- day*24; hour <- c(hour[1],cumsum(hour[1:length(hour)-1]))
year <- rep(year,each=12)
syntime <- hour[year==1968] #change the year or change this line to
include more years
t=dim.def.ncdf("Time","hours since 1800-1-1 00:00:00",syntime,unlim=TRUE)
And your "mrain" matrix should have 3 dimensions (lon x lat x time),
before to save it as a NetCDF file.
Regards.
Le 04/07/2012 23:13, Jun Chen a écrit :
>
> Hi Pascal,
> I think I figure it out.
> By doing the following, I can made "lon" & "lat" become a class of dim.ncdf:
> lon <- seq(from=140.0251, to=146.6751, length.out=241)
> lat <- seq(from=-38.975, to=-31.025, length.out=160)
> x=dim.def.ncdf("Lon","degreesE",as.double(lon))
> y=dim.def.ncdf("Lat","degreesN",as.double(lat))
>
> However, after running the script, there is a error I really unable to understand:
> error at data.frame(..., check.names = FALSE) :
> parameter value mean different rows 0, 31981
>
> If you can understand what the problem is, please as kind as offer me a direction.
>
>
>
> Many thanks,
> Jun
>
>
>
>
>> Date: Wed, 4 Jul 2012 10:39:29 +0100
>> From: kridox at ymail.com
>> Subject: Re: [R] Please help
>> To: chenshong at hotmail.com
>> CC: r-help at r-project.org
>>
>> Hello,
>>
>> Following lines are wrong:
>>> x=dim.def.ncdf("Lon","degreesE",140.0251:146.6751)
>>> y=dim.def.ncdf("Lat","degreesN",(-31.025):(-38.975))
>>
>> You have 241 longitudes and 160 latitudes.
>> lon <- seq(from=140.0251, to=146.6751, length.out=241)
>> lat <- seq(from=-38.975, to=-31.025, length.out=160)
>>
>> Regards
>>
>>
>>
>> ----- Mail original -----
>> De : Jun Chen <chenshong at hotmail.com>
>> À : r-help at r-project.org
>> Cc :
>> Envoyé le : Mercredi 4 juillet 2012 10h52
>> Objet : [R] Please help
>>
>>
>> Dear All,
>> I am a research student in environment. I have only little programming knowledge. I am currently doing the last project about rainfall impact on ground water quality in an area. It happens that I have to use R to read rainfall data (3 dimension) from ASC file (*.asc), and then write them into one NCDF file (*.nc).
>>
>> I have been working very hard on study R, but I still can not fix the problem. Could someone please as kind as point out that what the problems are in my R script?
>>
>> Firstly, this is an example of data in asc file:
>> NCOLS 241
>>
>> NROWS 160
>>
>> XLLCORNER 140.00012207031
>>
>> YLLCORNER -39.000000000000
>>
>> CELLSIZE 0.50000000000000E-01
>>
>> NODATA_VALUE -99.00000
>>
>> 166.30 160.87 155.23 149.33 143.83 138.52 133.29 128.34 123.76 119.21
>>
>> 115.06 110.90 107.22 103.69 100.40 97.29 94.58 92.15 90.00 87.91
>>
>> 86.20 84.57 83.22 81.94 81.11 80.38 79.37 78.73 79.70 79.62
>> -----------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>> And then this is the script I wrote:
>>
>> setwd("E:/grid")
>>
>> #defining dimension
>>
>> x=dim.def.ncdf("Lon","degreesE",140.0251:146.6751)
>>
>> y=dim.def.ncdf("Lat","degreesN",(-31.025):(-38.975))
>>
>> t=dim.def.ncdf("Time","1968-01",1:12,unlim=TRUE)
>>
>>
>>
>> #setup variable
>>
>> varmr=var.def.ncdf("mr","mm",list(x,y,t),-99.00,
>>
>> longname="monthly rainfall")
>>
>>
>> #create ncdf file
>>
>> ncnew=create.ncdf("rainfall.nc", varmr)
>>
>>
>> #read input
>>
>> files=list.files(pattern=".asc")
>>
>> mrain=matrix(0:0,0,3)
>>
>>
>> for(i in files)
>>
>> {rainfall=data.frame(readAsciiGrid(i))
>>
>> mrain=cbind(mrain,rainfall)
>>
>> }
>>
>> put.var.ncdf(ncnew, mrain)
>>
>>
>> close.ncdf(ncnew)
>>
>> -------------------------------------------------------------------------------
>>
>> [[elided Hotmail spam]]
>>
>>
>>
>>
>>
>> Many thanks,
>> Jun
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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.
>>
>
>
More information about the R-help
mailing list