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 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]]
__
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.