This should do it for you:


> base <- "http://research.stlouisfed.org/fred2/data/"
>
> files <- lapply(state.abb, function(.state){
+     cat(.state, "\n")
+     input <- read.table(paste0(base, .state, "RGSP.txt")
+                 , skip = 11
+                 , header = TRUE
+                 , as.is = TRUE
+                 )
+     input$DATE <- as.Date(input$DATE, "%Y-%m-%d")
+     input$SERIES <- paste0(.state, "RGSP")
+     input
+ })
AL
AK
AZ
AR
CA
CO
CT
DE
FL
GA
HI
ID
IL
IN
IA
KS
KY
LA
ME
MD
MA
MI
MN
MS
MO
MT
NE
NV
NH
NJ
NM
NY
NC
ND
OH
OK
OR
PA
RI
SC
SD
TN
TX
UT
VT
VA
WA
WV
WI
WY
>
> result <- do.call(rbind, files)
>
>
> str(result)
'data.frame':   750 obs. of  3 variables:
 $ DATE  : Date, format: "1997-01-01" "1998-01-01" "1999-01-01"
"2000-01-01" ...
 $ VALUE : int  122541 126309 130898 132699 133888 137086 140020 146937
150968 153681 ...
 $ SERIES: chr  "ALRGSP" "ALRGSP" "ALRGSP" "ALRGSP" ...
> head(result,30)
         DATE  VALUE SERIES
1  1997-01-01 122541 ALRGSP
2  1998-01-01 126309 ALRGSP
3  1999-01-01 130898 ALRGSP
4  2000-01-01 132699 ALRGSP
5  2001-01-01 133888 ALRGSP
6  2002-01-01 137086 ALRGSP
7  2003-01-01 140020 ALRGSP
8  2004-01-01 146937 ALRGSP
9  2005-01-01 150968 ALRGSP
10 2006-01-01 153681 ALRGSP
11 2007-01-01 155388 ALRGSP
12 2008-01-01 155870 ALRGSP
13 2009-01-01 148074 ALRGSP
14 2010-01-01 151480 ALRGSP
15 2011-01-01 150330 ALRGSP
16 1997-01-01  37249 AKRGSP
17 1998-01-01  35341 AKRGSP
18 1999-01-01  34967 AKRGSP
19 2000-01-01  34192 AKRGSP
20 2001-01-01  35729 AKRGSP
21 2002-01-01  37111 AKRGSP
22 2003-01-01  36288 AKRGSP
23 2004-01-01  38179 AKRGSP
24 2005-01-01  37774 AKRGSP
25 2006-01-01  39836 AKRGSP
26 2007-01-01  40694 AKRGSP
27 2008-01-01  41039 AKRGSP
28 2009-01-01  44030 AKRGSP
29 2010-01-01  43591 AKRGSP
30 2011-01-01  44702 AKRGSP
>



On Mon, Jun 10, 2013 at 7:42 PM, arum <arumkone@wrdf.org> wrote:

> I am downloading time series data from FRED. I have a working download,
> but I
> do not want to write out the download for all 50 states likes this:
>  IDRGSP <-
> read.table('http://research.stlouisfed.org/fred2/data/IDRGSP.txt',
> skip=11,
> header=TRUE)
> IDRGSP$DATE <- as.Date(IDRGSP$DATE, '%Y-%m-%d')
> IDRGSP$SERIES <- 'IDRGSP'
> IDRGSP$DESC <-  "Real Total Gross Domestic Product by State for Idaho, Mil.
> of, A, NSA, 2012-06-05"
>
> WYRGSP <- read.table('http://research.stlouisfed.org/fred2/data/WYRGSP.txt
> ',
> skip=11, header=TRUE)
> WYRGSP$DATE <- as.Date(WYRGSP$DATE, '%Y-%m-%d')
> WYRGSP$SERIES <- 'WYRGSP'
> WYRGSP$DESC <-  "Real Total Gross Domestic Product by State for Wyoming,
> Mil. of, A, NSA, 2012-06-05"
> RGSP <- rbind(IDRGSP, WYRGSP)
>
> I want to loop but I can not get the paste to work correctly. I am trying
> this:  Can someone help me figure out the loop so I can build a table for
> all 50 states.
> ab <- c(state.abb)
> base <- "'http://research.stlouisfed.org/fred2/data/"
> type <- "RGSP.txt', skip=11, header=TRUE";
>
> tmp <- NULL;
> for (a in ab) {
>   url <- paste(base, a, type, sep="");
>
> if (is.null(tmp))
>     tmp <- read.table(url)
>   else tmp <- rbind(tmp, read.table(url))
> }
> tmp
>
> thanks for your help
>
>
>
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Help-with-R-loop-for-URL-download-from-FRED-to-create-US-time-series-tp4669209.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

	[[alternative HTML version deleted]]

