On Jun 14, 2012, at 12:18 PM, Halldór Björnsson wrote:
Thanks and with
datlines <- as.data.frame(inp[( grep("<PRE>", inp)[1]+5 ):(grep("</
PRE>", inp)[1]-1)]);
I suggest this instead.
> read.fwf(textConnection(datlines), widths=rep(7,11))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
1 1008.0 54 8.6 6.5 87 6.06 0 0 281.1 297.9 282.1
2 1000.0 103 8.4 6.9 90 6.28 0 1 281.6 299.0 282.6
3 925.0 742 3.4 3.0 97 5.16 345 5 282.8 297.3 283.7
4 885.0 1100 1.2 1.2 100 4.74 14 6 284.1 297.6 284.9
5 850.0 1425 -0.1 -0.1 100 4.49 40 7 286.0 298.9 286.8
6 795.0 1955 -3.2 -3.2 100 3.83 90 11 288.3 299.5 288.9
7 744.0 2479 -6.2 -6.2 100 3.25 85 20 290.5 300.2 291.1
8 736.0 2565 -6.7 -6.7 100 3.16 81 19 290.8 300.3 291.4
9 723.0 2704 -8.0 -10.8 80 2.34 75 16 290.9 298.0 291.3
10 722.0 2715 -8.1 -11.1 79 2.28 76 16 290.9 297.9 291.3
--
David.
I get the data as needed.
Thanks again
H.
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
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@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.