Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if(!require(datamart)) install.packages("datamart")
- allensbach <- function(resource="sonntagsfrage") urldata3(
- resource=resource,
- template="http://www.ifd-allensbach.de/studien-und-berichte/sonntagsfrage/gesamt.html",
- extract.fct=htmlParse,
- transform.fct=function(x) {
- nodes <- try(getNodeSet(x, '//tr[@class="odd" or @class="even"]'), silent=TRUE)
- if(inherits(nodes, "try-error")) return(data.frame())
- if(length(nodes)==0) return(data.frame())
- dat <- as.data.frame(t(sapply(nodes, function(n) c(
- timestamp=xmlValue(n[[1]]),
- afd=xmlValue(n[[3]]),
- cducsu=xmlValue(n[[4]]),
- spd=xmlValue(n[[5]]),
- fdp=xmlValue(n[[6]]),
- gruene=xmlValue(n[[7]]),
- linke=xmlValue(n[[8]]),
- piraten=xmlValue(n[[9]]),
- sonstige=xmlValue(n[[10]])
- ))), stringsAsFactors=FALSE)
- parse_number <- function(x) {
- idx <- x=="--"
- x[!idx] <- gsub(",", ".", x[!idx], fixed=TRUE)
- x[idx] <- NA
- return(as.numeric(x))
- }
- dat <- transform(dat,
- timestamp=strptime(strtail(timestamp, 10), "%d.%m.%Y"),
- afd=parse_number(afd),
- cducsu=parse_number(cducsu),
- spd=parse_number(spd),
- fdp=parse_number(fdp),
- gruene=parse_number(gruene),
- linke=parse_number(linke),
- piraten=parse_number(piraten),
- sonstige=parse_number(sonstige)
- )
- return(dat)
- }
- )
- query(allensbach(), resource="sonntagsfrage")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement