Benutzer Diskussion:ElTres/R-code

aus Wikipedia, der freien Enzyklopädie

Achtung, bitte Quelltext benutzen, da eckige Doppelklammern wegen Wikisyntax falsch dargestellt werden.

library(XML)
library(stringr)

# Read and parse HTML file

parteien<-c("CDU/CSU","SPD","LINKE","GRÜNE","FDP","AfD","PIRATEN","FW")
#keineparteien<-c("PIRATEN","FW")
keineparteien<-NULL

inst<-data.frame("url"=c("http://seitemitumfragen/institutA","http://seitemitumfragen/institutB)"),
 kurz=c("A","B"))

scrap<-function(inst,parteien,keineparteien)
{
 data = readHTMLTable(as.character(inst$url))2
 data = as.matrix(data)
 
 dat<-data[,1]
 dat<-sub(".","/",dat,fixed=TRUE)
 dat<-sub(".","/",dat,fixed=TRUE)
 dat<-as.Date(dat,"%d/%m/%Y")
 data<-data[dat>as.Date("21/09/2013","%d/%m/%Y"),]
 
 results<-data.frame(datum=dat[dat>as.Date("21/09/2013","%d/%m/%Y")], inst=inst$kurz)
 n=dim(data)[1]
 for (p in parteien)
 {
   w=which(p==colnames(data))
   if (length(w)==0)resultsp<-rep(0,n)
   else
   {resultsp<-as.numeric(sub(" %","",sub(",",".",data[,w])))}
 }
 results$Sonstige<-rep(0,n)
 for (p in keineparteien)
 {
   w=which(p==colnames(data))
   x=as.numeric(sub(" %","",sub(",",".",data[,w])))
   x[is.na(x)]=0
   if (length(x)!=0)results"Sonstige"<-results"Sonstige"+x
 }
 
 txt=data[,which(colnames(data)=="Sonstige")]
 for (j in 1:n)
 {
 txt1=strsplit(as.character(txt[j])," %")
 for (k in length(txt1))
   {
   txt0<-txt11[k]
   for (p in parteien)
     {
     if (substr(txt0,1,str_length(p))==p)
       {
         txt02=substr(txt0,str_length(p)+2,1000)
         resultsp[j]=as.numeric(sub(" %","",sub(",",".",txt02)))
       }
   }
   for (p in keineparteien)
   {
     if (substr(txt0,1,str_length(p))==p)
     {
       txt02=substr(txt0,str_length(p)+2,1000)
       results"Sonstige"[j]=results"Sonstige"[j]+as.numeric(sub(" %","",sub(",",".",txt02)))
     }
   }
   
   if (substr(txt0,1,6)=="Sonst.")
   {
     txt0=substr(txt0,8,1000)
     results"Sonstige"=results"Sonstige"[j]+as.numeric(sub(" %","",sub(",",".",txt02)))
   }
 }
}
 return(results)
}

n=dim(institute)[1]
results=scrap(institute[1,],parteien,keineparteien)
for (i in 2:n)results=rbind(results,scrap(institute[i,],parteien,keineparteien))