Please look at the "Date" functions for this type of problem.
http://test.www.ncl.ucar.edu/Document/Functions/
Click "Date"
Also see:
http://www.ncl.ucar.edu/Document/Functions/Built-in/ind.shtml
--- Something like (see attached) ... other variables can be added ;========================================================= nDayYear = 365 if (isleapyear(year(0))) then nDayYear = 366 end if nDayFile = dimsizes(yearmoda) ; # days in current file YYYYMMDD = yyyymmdd_time(year(0), year(nDayFile-1) , "integer") TEMP = new (nDayYear, "float", 9999.9) ; preset all to 9999.9 do ndy=0,nDayFile-1 idy = ind(YYYYMMDD.eq.yearmoda(ndy)) TEMP(idy) = temp(ndy) end do print(YYYYMMDD+" "+TEMP) On 8/24/12 8:57 AM, Wen.J.Qu wrote: > Hi, Mary > Thanks a lot for your help. Yes, I am reading a lot of ascii > files. Below is an example of the file, there is no "..." in the file, > and the missing days are just omitted, without blank lines. > I want to find these missing days and fill the lines with missing values > for the varibles. Could you please give me some suggetions about this? > Thanks a lot. > STN--- WBAN YEARMODA TEMP DEWP SLP STP VISIB WDSP > MXSPD GUST MAX MIN PRCP SNDP FRSHTT > 106160 99999 19730101 27.1 24 13.4 24 9999.9 0 965.9 4 6.2 > 24 2.7 24 6.0 999.9 35.6* 19.4* 0.00I 999.9 000000 > 106160 99999 19730102 27.9 24 16.4 24 9999.9 0 9999.9 0 6.0 > 24 2.2 24 8.9 999.9 35.6* 23.0* 0.00I 999.9 000000 > 106160 99999 19730107 30.4 24 28.4 24 9999.9 0 974.4 4 2.4 > 24 4.5 24 8.0 999.9 37.4* 26.6* 99.99 999.9 110000 > 106160 99999 19730108 28.5 24 27.4 24 9999.9 0 973.6 7 1.9 > 24 4.8 24 8.0 999.9 30.2* 28.4* 99.99 999.9 110000 > 106160 99999 19730109 30.4 24 29.4 24 9999.9 0 971.1 7 0.4 > 24 1.9 24 6.0 999.9 32.0* 28.4* 99.99 999.9 111000 > 106160 99999 19730117 29.7 24 27.9 24 9999.9 0 946.9 7 1.8 > 24 6.7 24 13.0 999.9 30.2* 28.4* 0.00I 999.9 100000 > 106160 99999 19730118 28.4 24 26.4 24 9999.9 0 9999.9 0 2.5 > 24 3.7 24 7.0 13.0 9999.9 9999.9 99.99 999.9 111000 > 106160 99999 19730119 27.7 24 25.3 24 9999.9 0 9999.9 0 1.4 > 24 1.9 24 3.9 999.9 28.4* 26.6* 99.99 999.9 111000 > 106160 99999 19730120 30.9 24 29.4 24 9999.9 0 947.4 7 2.1 > 24 6.0 24 12.0 999.9 35.6* 28.4* 99.99 999.9 111000 > 106160 99999 19730201 31.0 24 27.8 24 9999.9 0 9999.9 0 5.6 > 24 1.8 24 4.1 999.9 35.6* 28.4* 0.00I 999.9 100000 > 106160 99999 19730202 30.9 24 28.9 24 9999.9 0 967.3 6 2.6 > 24 3.6 24 8.0 999.9 32.0* 28.4* 0.00I 999.9 100000 > Following is the scritpt I used to read the file. > ;Read data into a big 1D string array > fname = "data/gsod/1973/726055-99999-1973.op" > data = asciiread(fname,-1,"string") > ; Count the number of fields, just to show it can be done. > nfields = str_fields_count(data(0)," ") > print("number of fields = " + nfields) > ; > ; Skip first row of "data" because it's just a header line. > ; > ; Use a space (" ") as a delimiter in str_get_field. The first > ; field is field=1 (unlike str_get_cols, in which the first column > ; is column=0). > ; > stn = stringtoint(str_get_field(data(1::), 1," ")) > wban = stringtoint(str_get_field(data(1::), 2," ")) > yearmoda = stringtoint(str_get_field(data(1::), 3," ")) > year = stringtoint(str_get_cols(data(1::),14,17)) > month = stringtoint(str_get_cols(data(1::),18,19)) > day = stringtoint(str_get_cols(data(1::),20,21)) > temp = stringtofloat(str_get_field(data(1::), 4," ")) > ; Convert temperature from Fahrenheit to Celsius. > temp = (temp-32)*5/9 > dewp = stringtofloat(str_get_field(data(1::), 6," ")) > ; Convert dew point temperature from Fahrenheit to Celsius. > dewp = (dewp-32)*5/9 > ; Calculate relative humidity (%). > rh = 100*(((112-0.1*temp+dewp)/(112+0.9*temp))^8) > slp = stringtofloat(str_get_field(data(1::), 8," ")) > stp = stringtofloat(str_get_field(data(1::), 10," ")) > visib = stringtofloat(str_get_field(data(1::), 12," ")) > wdsp = stringtofloat(str_get_field(data(1::), 14," ")) > maxspd = stringtofloat(str_get_field(data(1::), 16," ")) > gust = stringtofloat(str_get_field(data(1::), 17," ")) > maxtemp = stringtofloat(str_get_field(data(1::), 18," ")) > ; Convert maximum temperature from Fahrenheit to Celsius. > maxtemp = (maxtemp-32)*5/9 > mintemp = stringtofloat(str_get_field(data(1::), 19," ")) > ; Convert minimum temperature from Fahrenheit to Celsius. > mintemp = (mintemp-32)*5/9 > prcp = stringtofloat(str_get_field(data(1::), 20," ")) > sndp = stringtofloat(str_get_field(data(1::), 21," ")) > frshtt = stringtoint(str_get_field(data(1::), 22," ")) > fog = stringtoint(str_get_cols(data(1::),132,132)) > rain = stringtoint(str_get_cols(data(1::),133,133)) > snow = stringtoint(str_get_cols(data(1::),134,134)) > hail = stringtoint(str_get_cols(data(1::),135,135)) > thunder = stringtoint(str_get_cols(data(1::),136,136)) > tornado = stringtoint(str_get_cols(data(1::),137,137)) > print(rh) > print(maxtemp) > print(frshtt) > print(yearmoda) > print(tornado) > ------------------------------------------------------------------------ > Wen.J.Qu > 2012-08-24 > ------------------------------------------------------------------------ > *发件人:* Mary Haley > *发送时间:* 2012-08-23 14:04:55 > *收件人:* Wen.J.Qu@gmail.com > *抄送:* > *主题:* Re: [ncl-talk] How to check and fill the missing lines with the > missing values? > Shawn, > I need more information. Are these lines of data in an ascii file? > If so, does the file actually look like that, with the "…" characters, or are the lines just blank, or something else? > If these lines of data are in an ascii file, how are you reading in the file? > If the lines are just blank, then you can read the file in as strings check for blank strings using "str_is_blank". > http://www.ncl.ucar.edu/Document/Functions/Built-in/str_is_blank.shtml > --Mary > On Aug 23, 2012, at 11:09 AM, Wen.J.Qu wrote: > > Hello, > > > > I am dealing with a daily time series of multiVaribles. My problem is that there are some missing days (lines) of the data, like below > > > > 19980101 ... > > 19980102 ... > > 19980103 ... > > 19980109 ... > > 19980201 ... > > 19980218 ... > > ... ... > > > > How can I check and fill these missing lines (days) with the missing values? > > > > Thanks a lot. > > > > > > Shawn > > > > Wen.J.Qu > > 2012-08-23 > > _______________________________________________ > > ncl-talk mailing list > > List instructions, subscriber options, unsubscribe: > > http://mailman.ucar.edu/mailman/listinfo/ncl-talk > > > _______________________________________________ > ncl-talk mailing list > List instructions, subscriber options, unsubscribe: > http://mailman.ucar.edu/mailman/listinfo/ncl-talk >
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
This archive was generated by hypermail 2.1.8 : Tue Aug 28 2012 - 08:53:45 MDT