On Jun 7, 2011, at 3:55 PM, Abraham Mathew wrote:
> I'm running R 2.13 on Ubuntu 10.10
>
> I have a data set which is comprised of character strings.
>
> site =
readLines('http://www.census.gov/tiger/tms/gazetteer/zips.txt')
>
> dat <- c("01, 35004, AL, ACMAR, 86.51557, 33.584132, 6055,
0.001499")
> dat
>
> I want to loop through the data and construct a data frame with the zip
> code,
> state abbreviation, and city name in seperate columns. Given the size of
> this
> data set, I was wondering if there was an efficient way to get the desired
> results.
>
> Thanks
> Abraham
Since the original text file is a CSV file (without a header), just use:
> system.time(DF <-
read.csv("http://www.census.gov/tiger/tms/gazetteer/zips.txt", header
= FALSE))
user system elapsed
0.385 0.033 1.832
> str(DF)
'data.frame': 29470 obs. of 8 variables:
$ V1: int 1 1 1 1 1 1 1 1 1 1 ...
$ V2: int 35004 35005 35006 35007 35010 35014 35016 35019 35020 35023 ...
$ V3: Factor w/ 51 levels "AK","AL","AR",..: 2 2
2 2 2 2 2 2 2 2 ...
$ V4: Factor w/ 16698 levels "02821","04465",..: 150 168
180 7710 10434 348 547 812 1250 7044 ...
$ V5: num 86.5 87 87.2 86.8 86 ...
$ V6: num 33.6 33.6 33.4 33.2 32.9 ...
$ V7: int 6055 10616 3205 14218 19942 3062 13650 1781 40549 39677 ...
$ V8: num 0.001499 0.002627 0.000793 0.003519 0.004935 ...
> head(DF)
V1 V2 V3 V4 V5 V6 V7 V8
1 1 35004 AL ACMAR 86.51557 33.58413 6055 0.001499
2 1 35005 AL ADAMSVILLE 86.95973 33.58844 10616 0.002627
3 1 35006 AL ADGER 87.16746 33.43428 3205 0.000793
4 1 35007 AL KEYSTONE 86.81286 33.23687 14218 0.003519
5 1 35010 AL NEW SITE 85.95109 32.94145 19942 0.004935
6 1 35014 AL ALPINE 86.20893 33.33116 3062 0.000758
HTH,
Marc Schwartz