arum
2013-Jun-10 23:42 UTC
[R] Help with R loop for URL download from FRED to create US time series
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.
jim holtman
2013-Jun-11 04:15 UTC
[R] Help with R loop for URL download from FRED to create US time series
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]]