downloadAndExtract_USD_CAD <- function(years,outFile) { mStr=c("01","02","03","04","05","06","07","08","09","10","11","12") if (file.exists(outFile)) { file.remove(outFile) } URL="http://ratedata.gaincapital.com" for (y in years) { for (m in mStr) { for (w in 1:5){ mName=paste(m,month.name[as.numeric(m)]) wName=paste("USD_CAD_Week",w,".zip",sep=""); fullName=paste(URL,y,mName,wName,sep="/") a=paste("Downloading:",fullName,"\n" ,sep=" ",collapse="") cat(a) try(downloadAndExtractData(fullName,outFile),silent=TRUE) } } } } downloadAndExtractData <- function(zipfile,outFile) { # Create a name for the dir where we'll unzip zipdir <- tempfile() # Create the dir using that name dir.create(zipdir) dFile=paste(zipdir,"\\zzz.zip",sep=""); print (dFile) try(download.file(zipfile,destfile=dFile, mode="wb"),silent=T) # Unzip the file into the dir unzip(dFile, exdir=zipdir) # Get the files into the dir files <- list.files(zipdir) # Throw an error if there's more than one if(length(files)>2) stop("More than one data file inside zip") # Get the full name of the file f<- paste(zipdir, files[1], sep="/") size=file.info(f)$size if (size==0) { cat("Zero file size\n") return() } # Read the file cat("\n") print(c("Downladed tmp file:",f)) cat("\n") dat=read.csv(f,header=F) len=dim(dat) print(c("Downloaded #nrows:",len[1])) #we are just interested in prices at 16:59 index=grepl(" 16:59",dat[,"V3"]) d=dat[index,] # append to output file write.table(d,outFile,append=TRUE,row.names=FALSE,col.names=FALSE) # lets read all written data so far dat=read.csv(outFile) cat("\n") print(c("Total rows:",dim(dat)[1])) # tidy up a bit file.remove(f) }
Wednesday, October 30, 2013
Downloading daily USD/CAD fx rate within R
Below code illustrates how to download daily USD/CAD fx rate within R from
http://ratedata.gaincapital.com
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment