[R] read.table and variable length of tables

David Winsemius dwinsemius at comcast.net
Thu Jun 14 17:49:57 CEST 2012


On Jun 14, 2012, at 10:23 AM, Halldór Björnsson wrote:

> Hi,
>
> I am trying to read in weather balloon data, where each file has a  
> header of fixed length and
> a trailing section of a fixed length. The data section (the table)  
> is of variable length.
>
> An example of the data is on:
>
> http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2011&MONTH=06&FROM=1400&TO=1400&STNM=04018
>
> This data has 97 rows and can be read as:
> read.table("http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2011&MONTH=06&FROM=1400&TO=1400&STNM=04018 
> ",skip=10,nrows=97)
>
> If I set nrows=98 I run into the trailing section.
>
>> From day to day the table length changes. Is there a way to get  
>> read.table to always read in the correct
> length and just stop when it hits the trailing section?

Looks to be fairly straightforward HTML

inp <- readLines(con=url("http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2011&MONTH=06&FROM=1400&TO=1400&STNM=04018 
"))

 > grep("<PRE>", inp)
[1]   6 109

That was followed by multi-line header.
 > inp[grep("<PRE>", inp)[1]+4]
[1]  
"-----------------------------------------------------------------------------"


The ending can be found similarly:

 > grep("</PRE>", inp)
[1] 109 140

datlines <- inp[( grep("<PRE>", inp)[1]+5 ):(grep("</PRE>", inp)[1]-1)]

You may need to use read.fwf for input since the table has missing  
values.

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list