******************************************************************** # Forschungsseminar Politischer Datenjournalismus # 2. Blogbeitrag von Lukas Lauener # zuletzt geändert: 28.03.2015 ******************************************************************** # Voreinstellungen rm(list=ls(all=TRUE)) # Environment leeren getwd() setwd("/home/ddj/llauener/Blogbeitrag 2") # Arbeitsordner ändern options(stringsAsFactors=F) # Automatisches Bilden von Faktoren in Data frames verhindern set.seed(123) # Reproduzierbarkeit für Operationen mit Zufallszahlen # Pakete laden library(foreign) library(ROAuth) # R-Anbindung für Registrierung bei Twitter (siehe https://dev.twitter.com/docs/faq) library(twitteR) # R-Anbindung für Datenbeschaffung bei Twitter library(ggplot2) # Für Grafiken in ggplot library(grid) # Für Anpassung des Hintergrunds mit ggplot require(scales) # für Anpassung der Skalen mit ggplot library(RColorBrewer) # Farbschema library(devtools) library(stringr) # Ermöglicht Umgang mit Regular Expressions library(RMySQL) # Datenbankanbindung library(plyr) # Datenbeschaffung mittels Twitter-API (mit twitteR und ROAuth) # URLs der Twitter Registrierungs-API definieren requestURL <- "https://api.twitter.com/oauth/request_token" accessURL <- "https://api.twitter.com/oauth/access_token" authURL <- "https://api.twitter.com/oauth/authorize" # Credentials in File speichern credentials <- c( "xxx", "xxx", "xxx", "xxx" ) save(credentials, file="twitter-cred.rdata") # Authorisierungsangaben in eine Datei speichern, um die Registrierung nicht jedesmal neu machen zu m\"ussen # Registrierung vornehmen load("twitter-cred.rdata") # laden der Authorisierungsangaben setup_twitter_oauth(credentials[1], credentials[2], credentials[3], credentials[4]) # Userliste von phpMyAdmin laden # Mit Datenbank verbinden v_db <- dbConnect(MySQL(), user="xxx", pass="xxx", host="localhost", dbname="twitter") on.exit(dbDisconnect(v_db)) # Datensatz der Accounts von Datenbank laden rs <- dbSendQuery(v_db, "SELECT * FROM `accounts`") accounts <- fetch(rs, n=-1) userID <- accounts$twitterID # Liste von Twitter ID's erstellen, da Twitternames teilweise falsch/nicht vorhanden userNames <- lookupUsers(userID) # Twitternames für ID's suchen userDF <- twListToDF(userNames) # Liste in Dataframe umwandeln für zusätzliche Informationen userDF <- subset(userDF, statusesCount>=1) # Subset der User, die mindestens einen Tweet abgesetzt haben names(userDF)[names(userDF)=="id"] <- "twitterID" # Datensätz "userDF" und "accounts" mergen by "twitterID" users <- merge(accounts,userDF,by="twitterID") # unnötige Spalten löschen users <- users[,-c(2:9,26,27)] users <- users[,-c(17)] users <- users[,-c(5,19:21)] # Spalten umordnen users <- users[c(1,15,16,7,8,3,17,5,6,2,4,9,10,11,12,13,14)] names(users)[names(users)=="screenName.y"] <- "screenName" userNames <- users$name write.csv(user, file = "users.csv", row.names = FALSE) # Resultate als CSV speichern # Datensatz Tweets aus Datenbank laden # Textcodierung anpassen dbSendQuery(v_db, "set names utf8") tw <- dbSendQuery(v_db, "SELECT * FROM `tweets`") tweets <- fetch(tw, n=-1) Encoding(tweets$text) <- 'UTF-8' # Nach Vorlagennummer -> Liste mit Stichwörtern/Hashtags bestimmen (s. Word-Dokument "Keywords) keywords578 <- c("fabi", "eisenbahninfrastruktur", "infrastruktur", "faif") keywords579 <- c("abtreibung", "abtreibungsinitiative", "abtreibungsfinanzierung", "avortement") keywords580 <- c("mei", "masseneinwanderung", "pfz", "dichtestress", "svpinitiative", "masseneinwanderungsinitiative", "massenei", "immigrationdemasse", "immigration", "personenfreizügigkeit", "einwanderung", "zuwanderung", "massenzuwanderung", "abschottung") keywords581 <- c("medgv", "hausarztmedizin", "grundversorgung", "médecine", "medecine") keywords582 <- c("pädo14", "paedo14", "paedo", "pädo", "pädophilen", "pädophile", "pädophilie", "pädophileninitiative", "marcheblanche", "pädosexuell") keywords583 <- c("milo14", "mindestlohn", "mli", "mindestlohninitiative", "salaireminimum", "smicch", "salaire", "mindestlöhne", "lohngerechtigkeit", "lohnungerechtigkeit", "lohnkampf") keywords584 <- c("gripen", "gripenja", "gripennein", "kampfflugzeug", "militärflugzeug", "kampfjet", "kampfflieger", "luftwaffe") keywords585 <- c("mwst14", "mwst", "tax14", "gastrosuisse", "tva14", "tva", "gastroinitiative", "gastro", "gastroch") keywords586 <- c("einheitskasse", "einheitskrankenkasse", "ehk14", "oeffkk", "öffkk", "oefkk", "oekk", "ökk14", "oekk14", "kkch", "caissepublique", "caissech", "caisseunique") keywords587 <- c("pauschalbesteuerung", "pauschalsteuer", "forfaitsfiscaux", "pauschalbesteuerungsinitiative") keywords588 <- c("ecopop", "ecopopja", "ecopopnein", "dichtestress", "ecopopnon", "ecopopoui") keywords589 <- c("goldinitiative", "snb", "gold", "orbns", "or", "bns") keywords590 <- c("familieninitiative", "cvpinitiative", "initiativefamille") keywords591 <- c("viesm", "energieinitiative", "glpinitiative", "tecontretva", "tva") #alle Keywords zusammenfassen keywords1 <- c(keywords578,keywords579,keywords580,keywords581,keywords582,keywords583,keywords584,keywords585,keywords586,keywords587,keywords588, keywords589) keywords2 <- c(keywords590,keywords591) ######################################################################################################## # Datensätze "tweets" und "users" mergen by "screenName" data <- merge(users,tweets,by="screenName") # Datum in R-Format für datetime umwandeln data$tweetCreation <- as.POSIXct(data$tweetCreation, format='%Y-%m-%d %H:%M:%S') # Lower case der Tweets für die Analyse data$text <- tolower(data$text) ####################################################################################################### # Für Abstimmungen 590 und 591 eigener Datensatz mit letzten 300 Tweets der Akteure erstellen # Warnings in Errors umwandeln, damit diese von Loop aufgefangen werden options(warn=2) # Leerer Dataframe für Tweets results <- data.frame() # Loop, um die letzten 300 Tweets pro User herunterzuladen for (user in userNames) { # printe die Usernames um zu schauen, welche user schon abgefragt sind print(user) err <- try(userTimeline(user, n=300, includeRts=TRUE), silent = T) # Userabfrage testen wegen rate limit if (grepl("OAuth authentication error:", err[1])) { print(" \nUser is protected!") tweets1 <- list() } else if (grepl("Rate limit encountered", err[1])) { Sys.sleep(905) # Anzahl Sekunden warten, falls rate limit erreicht ist (Twitter: 15 times in 15 minutes) tweets1 <- try(userTimeline(user, n=300, includeRts=TRUE), silent = T) # Userabfrage nochmals testen, um versch. Errors aufzufangen } else { tweets1 <- err # Wenn class(err) == "try-error", dann ist err = tweets } # am Schluss alles zusammenfügen und in Dataframe "results" speichern if (length(tweets1) != 0) { tweets1 <- twListToDF(tweets1) # Liste in Dataframe umwandeln results <- rbind(results, tweets1) # Alles zusammenfuegen } } # Datensätze "results" und "users" mergen by "screenName" data1 <- merge(users,results,by="screenName") # Datum in R-Format für datetime umwandeln data1$created <- as.POSIXct(data1$created, format='%Y-%m-%d %H:%M:%S') # Lower case der Tweets für die Analyse tryTolower = function(x) { # create missing value # this is where the returned value will be y = NA # tryCatch error try_error = tryCatch(tolower(x), error = function(e) e) # if not an error if (!inherits(try_error, "error")) y = tolower(x) return(y) } data1$text <- sapply(data1$text, function(x) tryTolower(x)) ########################################################################################################## # Analyse der Tweets mit Regular Expressions für Zuordnung zu Abstimmungsthemen # Loop pro Wort (Abstimmungen 2014: 578 bis 589) für Analyse der Tweets for (word in keywords1) { print(paste0("Schaue @ Keyword ",word)) col <- str_detect(data$text, paste0("(^|[[:blank:]]|#)(",word,"){1}($|[[:blank:]]|[[:punct:]])")) data <- cbind(data, col) data <- rename(data, c("col"= word)) # Pro Wort wird eine neue Spalte angehängt mit TRUE/FALSE } # Abstimmungen 590 und 591 for (word in keywords2) { print(paste0("Schaue @ Keyword ",word)) col <- str_detect(data1$text, paste0("(^|[[:blank:]]|#)(",word,"){1}($|[[:blank:]]|[[:punct:]])")) data1 <- cbind(data1, col) data1 <- rename(data1, c("col"= word)) # Pro Wort wird eine neue Spalte angehängt mit TRUE/FALSE } ##################################################################################################################################### # Vektoren generiern für Tweets nach Tagen VOR Abstimmung (6 Wochen = 42 Tage) vector_februar14 <- c("2013-12-29","2013-12-30","2013-12-31","2014-01-01","2014-01-02","2014-01-03","2014-01-04","2014-01-05", "2014-01-06","2014-01-07","2014-01-08","2014-01-09","2014-01-10","2014-01-11","2014-01-12","2014-01-13", "2014-01-14","2014-01-15","2014-01-16","2014-01-17","2014-01-18","2014-01-19","2014-01-20","2014-01-21", "2014-01-22","2014-01-23","2014-01-24","2014-01-25","2014-01-26","2014-01-27","2014-01-28","2014-01-29", "2014-01-30","2014-01-31","2014-02-01","2014-02-02","2014-02-03","2014-02-04","2014-02-05","2014-02-06", "2014-02-07","2014-02-08") vector_mai14 <- c("2014-04-06", "2014-04-07","2014-04-08","2014-04-09","2014-04-10","2014-04-11","2014-04-12","2014-04-13", "2014-04-14", "2014-04-15","2014-04-16","2014-04-17","2014-04-18","2014-04-19","2014-04-20","2014-04-21", "2014-04-22", "2014-04-23","2014-04-24","2014-04-25","2014-04-26","2014-04-27","2014-04-28","2014-04-29", "2014-04-30", "2014-05-01","2014-05-02","2014-05-03","2014-05-04","2014-05-05","2014-05-06","2014-05-07", "2014-05-08", "2014-05-09","2014-05-10","2014-05-11","2014-05-12","2014-05-13","2014-05-14","2014-05-15", "2014-05-16","2014-05-17") vector_september14 <- c("2014-08-17", "2014-08-18","2014-08-19","2014-08-20","2014-08-21","2014-08-22","2014-08-23","2014-08-24", "2014-08-25", "2014-08-26","2014-08-27","2014-08-28","2014-08-29","2014-08-30","2014-08-31","2014-09-01", "2014-09-02", "2014-09-03","2014-09-04","2014-09-05","2014-09-06","2014-09-07","2014-09-08","2014-09-09", "2014-09-10", "2014-09-11","2014-09-12","2014-09-13","2014-09-14","2014-09-15","2014-09-16","2014-09-17", "2014-09-18", "2014-09-19","2014-09-20","2014-09-21","2014-09-22","2014-09-23","2014-09-24","2014-09-25", "2014-09-26", "2014-09-27") vector_november14 <- c("2014-10-19", "2014-10-20","2014-10-21","2014-10-22","2014-10-23","2014-10-24","2014-10-25","2014-10-26", "2014-10-27", "2014-10-28","2014-10-29","2014-10-30","2014-10-31","2014-11-01","2014-11-02","2014-11-03", "2014-11-04", "2014-11-05","2014-11-06","2014-11-07","2014-11-08","2014-11-09","2014-11-10","2014-11-11", "2014-11-12", "2014-11-13","2014-11-14","2014-11-15","2014-11-16","2014-11-17","2014-11-18","2014-11-19", "2014-11-20", "2014-11-21","2014-11-22","2014-11-23","2014-11-24","2014-11-25","2014-11-26","2014-11-27", "2014-11-28", "2014-11-29") vector_märz15 <- c("2015-01-25", "2015-01-26","2015-01-27","2015-01-28","2015-01-29","2015-01-30","2015-01-31","2015-02-01", "2015-02-02", "2015-02-03","2015-02-04","2015-02-05","2015-02-06","2015-02-07","2015-02-08","2015-02-09", "2015-02-10", "2015-02-11","2015-02-12","2015-02-13","2015-02-14","2015-02-15","2015-02-16","2015-02-17", "2015-02-18", "2015-02-19","2015-02-20","2015-02-21","2015-02-22","2015-02-23","2015-02-24","2015-02-25", "2015-02-26", "2015-02-27","2015-02-28","2015-03-01","2015-03-02","2015-03-03","2015-03-04","2015-03-05", "2015-03-06", "2015-03-07") ########################## VORLAGE 578 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage578 <- data[,c("tweetCreation", "party", "fabi", "infrastruktur", "eisenbahninfrastruktur", "faif")] for (word in keywords578) {vorlage578[[word]] <- vorlage578[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage578$tweetCreation <- as.Date(vorlage578$tweetCreation, format='%Y-%m-%d') vorlage578 <- subset(vorlage578, tweetCreation >= as.Date("2013-12-29") & tweetCreation < as.Date("2014-02-09")) # Summe der Tweets nach Parteien sum578 <- aggregate(cbind(fabi, eisenbahninfrastruktur, infrastruktur, faif) ~ party, vorlage578, FUN = sum) for(i in 1:length(sum578[,1])){ sum578$sum[i] = sum(sum578[i,2:(1+length(keywords578))]) } # Anteile Tweets an Gesamtvolumen sum578$Anteile <- sum578$sum / sum(sum578$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage578 <- aggregate(cbind(fabi, eisenbahninfrastruktur, infrastruktur, faif) ~ tweetCreation, vorlage578, FUN = sum) for(i in 1:length(tage578[,1])){ tage578$sum[i] = sum(tage578[i,2:(1+length(keywords578))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.578 = data.frame(cbind(vector_februar14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.578) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_februar14)){ temp <- subset(vorlage578, tweetCreation == vector_februar14[i]) temp <- aggregate(cbind(fabi, eisenbahninfrastruktur, infrastruktur, faif) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords578))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.578$SVP[i] = temp[10,7] party.anteile.578$SPS[i] = temp[9,7] party.anteile.578$CVP[i] = temp[2,7] party.anteile.578$FDP[i] = temp[4,7] party.anteile.578$RL[i] = temp[7,7] party.anteile.578$RR[i] = temp[8,7] party.anteile.578$GLP[i] = temp[5,7] party.anteile.578$GPS[i] = temp[6,7] party.anteile.578$BDP[i] = temp[1,7] party.anteile.578$EVP[i] = temp[3,7] } ####################################################################################################################### ########################## VORLAGE 579 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage579 <- data[,c("tweetCreation", "party", "abtreibung", "abtreibungsinitiative", "abtreibungsfinanzierung", "avortement")] for (word in keywords579) {vorlage579[[word]] <- vorlage579[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage579$tweetCreation <- as.Date(vorlage579$tweetCreation, format='%Y-%m-%d') vorlage579 <- subset(vorlage579, tweetCreation >= as.Date("2013-12-29") & tweetCreation < as.Date("2014-02-09")) # Summe der Tweets nach Parteien sum579 <- aggregate(cbind(abtreibung, abtreibungsinitiative, abtreibungsfinanzierung, avortement) ~ party, vorlage579, FUN = sum) for(i in 1:length(sum579[,1])){ sum579$sum[i] = sum(sum579[i,2:(1+length(keywords579))]) } # Anteile Tweets an Gesamtvolumen sum579$Anteile <- sum579$sum / sum(sum579$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage579 <- aggregate(cbind(abtreibung, abtreibungsinitiative, abtreibungsfinanzierung, avortement) ~ tweetCreation, vorlage579, FUN = sum) for(i in 1:length(tage579[,1])){ tage579$sum[i] = sum(tage579[i,2:(1+length(keywords579))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.579 = data.frame(cbind(vector_februar14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.579) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_februar14)){ temp <- subset(vorlage579, tweetCreation == vector_februar14[i]) temp <- aggregate(cbind(abtreibung, abtreibungsinitiative, abtreibungsfinanzierung, avortement) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords579))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.579$SVP[i] = temp[10,7] party.anteile.579$SPS[i] = temp[9,7] party.anteile.579$CVP[i] = temp[2,7] party.anteile.579$FDP[i] = temp[4,7] party.anteile.579$RL[i] = temp[7,7] party.anteile.579$RR[i] = temp[8,7] party.anteile.579$GLP[i] = temp[5,7] party.anteile.579$GPS[i] = temp[6,7] party.anteile.579$BDP[i] = temp[1,7] party.anteile.579$EVP[i] = temp[3,7] } ####################################################################################################################### ########################## VORLAGE 580 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage580 <- data[,c("tweetCreation", "party", "mei", "masseneinwanderung", "pfz", "dichtestress", "svpinitiative", "masseneinwanderungsinitiative", "massenei", "immigrationdemasse", "immigration", "personenfreizügigkeit", "einwanderung", "zuwanderung", "massenzuwanderung", "abschottung")] for (word in keywords580) {vorlage580[[word]] <- vorlage580[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage580$tweetCreation <- as.Date(vorlage580$tweetCreation, format='%Y-%m-%d') vorlage580 <- subset(vorlage580, tweetCreation >= as.Date("2013-12-29") & tweetCreation < as.Date("2014-02-09")) # Summe der Tweets nach Parteien sum580 <- aggregate(cbind(mei, masseneinwanderung, pfz, dichtestress, svpinitiative, masseneinwanderungsinitiative, massenei, immigrationdemasse, immigration, personenfreizügigkeit, einwanderung, zuwanderung, massenzuwanderung, abschottung) ~ party, vorlage580, FUN = sum) for(i in 1:length(sum580[,1])){ sum580$sum[i] = sum(sum580[i,2:(1+length(keywords580))]) } # Anteile Tweets an Gesamtvolumen sum580$Anteile <- sum580$sum / sum(sum580$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage580 <- aggregate(cbind(mei, masseneinwanderung, pfz, dichtestress, svpinitiative, masseneinwanderungsinitiative, massenei, immigrationdemasse, immigration, personenfreizügigkeit, einwanderung, zuwanderung, massenzuwanderung, abschottung) ~ tweetCreation, vorlage580, FUN = sum) for(i in 1:length(tage580[,1])){ tage580$sum[i] = sum(tage580[i,2:(1+length(keywords580))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.580 = data.frame(cbind(vector_februar14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.580) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_februar14)){ temp <- subset(vorlage580, tweetCreation == vector_februar14[i]) temp <- aggregate(cbind(mei, masseneinwanderung, pfz, dichtestress, svpinitiative, masseneinwanderungsinitiative, massenei, immigrationdemasse, immigration, personenfreizügigkeit, einwanderung, zuwanderung, massenzuwanderung, abschottung) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords580))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.580$SVP[i] = temp[10,17] party.anteile.580$SPS[i] = temp[9,17] party.anteile.580$CVP[i] = temp[2,17] party.anteile.580$FDP[i] = temp[4,17] party.anteile.580$RL[i] = temp[7,17] party.anteile.580$RR[i] = temp[8,17] party.anteile.580$GLP[i] = temp[5,17] party.anteile.580$GPS[i] = temp[6,17] party.anteile.580$BDP[i] = temp[1,17] party.anteile.580$EVP[i] = temp[3,17] } ####################################################################################################################### ########################## VORLAGE 581 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage581 <- data[,c("tweetCreation", "party", "medgv", "hausarztmedizin", "grundversorgung", "médecine", "medecine")] for (word in keywords581) {vorlage581[[word]] <- vorlage581[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage581$tweetCreation <- as.Date(vorlage581$tweetCreation, format='%Y-%m-%d') vorlage581 <- subset(vorlage581, tweetCreation >= as.Date("2014-04-06") & tweetCreation < as.Date("2014-05-18")) # Summe der Tweets nach Parteien sum581 <- aggregate(cbind(medgv, hausarztmedizin, grundversorgung, médecine, medecine) ~ party, vorlage581, FUN = sum) for(i in 1:length(sum581[,1])){ sum581$sum[i] = sum(sum581[i,2:(1+length(keywords581))]) } # Anteile Tweets an Gesamtvolumen sum581$Anteile <- sum581$sum / sum(sum581$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage581 <- aggregate(cbind(medgv, hausarztmedizin, grundversorgung, médecine, medecine) ~ tweetCreation, vorlage581, FUN = sum) for(i in 1:length(tage581[,1])){ tage581$sum[i] = sum(tage581[i,2:(1+length(keywords581))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.581 = data.frame(cbind(vector_mai14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.581) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_mai14)){ temp <- subset(vorlage581, tweetCreation == vector_mai14[i]) temp <- aggregate(cbind(medgv, hausarztmedizin, grundversorgung, médecine, medecine) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords581))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.581$SVP[i] = temp[10,8] party.anteile.581$SPS[i] = temp[9,8] party.anteile.581$CVP[i] = temp[2,8] party.anteile.581$FDP[i] = temp[4,8] party.anteile.581$RL[i] = temp[7,8] party.anteile.581$RR[i] = temp[8,8] party.anteile.581$GLP[i] = temp[5,8] party.anteile.581$GPS[i] = temp[6,8] party.anteile.581$BDP[i] = temp[1,8] party.anteile.581$EVP[i] = temp[3,8] } ####################################################################################################################### ########################## VORLAGE 582 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage582 <- data[,c("tweetCreation", "party", "pädo14", "paedo14", "paedo", "pädo", "pädophilen", "pädophile", "pädophilie", "pädophileninitiative", "marcheblanche", "pädosexuell")] for (word in keywords582) {vorlage582[[word]] <- vorlage582[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage582$tweetCreation <- as.Date(vorlage582$tweetCreation, format='%Y-%m-%d') vorlage582 <- subset(vorlage582, tweetCreation >= as.Date("2014-04-06") & tweetCreation < as.Date("2014-05-18")) # Summe der Tweets nach Parteien sum582 <- aggregate(cbind(pädo14, paedo14, paedo, pädo, pädophilen, pädophile, pädophilie, pädophileninitiative, marcheblanche, pädosexuell) ~ party, vorlage582, FUN = sum) for(i in 1:length(sum582[,1])){ sum582$sum[i] = sum(sum582[i,2:(1+length(keywords582))]) } # Anteile Tweets an Gesamtvolumen sum582$Anteile <- sum582$sum / sum(sum582$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage582 <- aggregate(cbind(pädo14, paedo14, paedo, pädo, pädophilen, pädophile, pädophilie, pädophileninitiative, marcheblanche, pädosexuell) ~ tweetCreation, vorlage582, FUN = sum) for(i in 1:length(tage582[,1])){ tage582$sum[i] = sum(tage582[i,2:(1+length(keywords582))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.582 = data.frame(cbind(vector_mai14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.582) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_mai14)){ temp <- subset(vorlage582, tweetCreation == vector_mai14[i]) temp <- aggregate(cbind(pädo14, paedo14, paedo, pädo, pädophilen, pädophile, pädophilie, pädophileninitiative, marcheblanche, pädosexuell) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords582))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.582$SVP[i] = temp[10,13] party.anteile.582$SPS[i] = temp[9,13] party.anteile.582$CVP[i] = temp[2,13] party.anteile.582$FDP[i] = temp[4,13] party.anteile.582$RL[i] = temp[7,13] party.anteile.582$RR[i] = temp[8,13] party.anteile.582$GLP[i] = temp[5,13] party.anteile.582$GPS[i] = temp[6,13] party.anteile.582$BDP[i] = temp[1,13] party.anteile.582$EVP[i] = temp[3,13] } ####################################################################################################################### ########################## VORLAGE 583 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage583 <- data[,c("tweetCreation", "party", "milo14", "mindestlohn", "mli", "mindestlohninitiative", "salaireminimum", "smicch", "salaire", "mindestlöhne", "lohngerechtigkeit", "lohnungerechtigkeit", "lohnkampf")] for (word in keywords583) {vorlage583[[word]] <- vorlage583[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage583$tweetCreation <- as.Date(vorlage583$tweetCreation, format='%Y-%m-%d') vorlage583 <- subset(vorlage583, tweetCreation >= as.Date("2014-04-06") & tweetCreation < as.Date("2014-05-18")) # Summe der Tweets nach Parteien sum583 <- aggregate(cbind(milo14, mindestlohn, mli, mindestlohninitiative, salaireminimum, smicch, salaire, mindestlöhne, lohngerechtigkeit, lohnungerechtigkeit, lohnkampf) ~ party, vorlage583, FUN = sum) for(i in 1:length(sum583[,1])){ sum583$sum[i] = sum(sum583[i,2:(1+length(keywords583))]) } # Anteile Tweets an Gesamtvolumen sum583$Anteile <- sum583$sum / sum(sum583$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage583 <- aggregate(cbind(milo14, mindestlohn, mli, mindestlohninitiative, salaireminimum, smicch, salaire, mindestlöhne, lohngerechtigkeit, lohnungerechtigkeit, lohnkampf) ~ tweetCreation, vorlage583, FUN = sum) for(i in 1:length(tage583[,1])){ tage583$sum[i] = sum(tage583[i,2:(1+length(keywords583))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.583 = data.frame(cbind(vector_mai14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.583) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_mai14)){ temp <- subset(vorlage583, tweetCreation == vector_mai14[i]) temp <- aggregate(cbind(milo14, mindestlohn, mli, mindestlohninitiative, salaireminimum, smicch, salaire, mindestlöhne, lohngerechtigkeit, lohnungerechtigkeit, lohnkampf) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords583))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.583$SVP[i] = temp[10,14] party.anteile.583$SPS[i] = temp[9,14] party.anteile.583$CVP[i] = temp[2,14] party.anteile.583$FDP[i] = temp[4,14] party.anteile.583$RL[i] = temp[7,14] party.anteile.583$RR[i] = temp[8,14] party.anteile.583$GLP[i] = temp[5,14] party.anteile.583$GPS[i] = temp[6,14] party.anteile.583$BDP[i] = temp[1,14] party.anteile.583$EVP[i] = temp[3,14] } ####################################################################################################################### ########################## VORLAGE 584 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage584 <- data[,c("tweetCreation", "party", "gripen", "gripenja", "gripennein", "kampfflugzeug", "militärflugzeug", "kampfjet", "kampfflieger", "luftwaffe")] for (word in keywords584) {vorlage584[[word]] <- vorlage584[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage584$tweetCreation <- as.Date(vorlage584$tweetCreation, format='%Y-%m-%d') vorlage584 <- subset(vorlage584, tweetCreation >= as.Date("2014-04-06") & tweetCreation < as.Date("2014-05-18")) # Summe der Tweets nach Parteien sum584 <- aggregate(cbind(gripen, gripenja, gripennein, kampfflugzeug, militärflugzeug, kampfjet, kampfflieger, luftwaffe) ~ party, vorlage584, FUN = sum) for(i in 1:length(sum584[,1])){ sum584$sum[i] = sum(sum584[i,2:(1+length(keywords584))]) } # Anteile Tweets an Gesamtvolumen sum584$Anteile <- sum584$sum / sum(sum584$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage584 <- aggregate(cbind(gripen, gripenja, gripennein, kampfflugzeug, militärflugzeug, kampfjet, kampfflieger, luftwaffe) ~ tweetCreation, vorlage584, FUN = sum) for(i in 1:length(tage584[,1])){ tage584$sum[i] = sum(tage584[i,2:(1+length(keywords584))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.584 = data.frame(cbind(vector_mai14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.584) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_mai14)){ temp <- subset(vorlage584, tweetCreation == vector_mai14[i]) temp <- aggregate(cbind(gripen, gripenja, gripennein, kampfflugzeug, militärflugzeug, kampfjet, kampfflieger, luftwaffe) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords584))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.584$SVP[i] = temp[10,11] party.anteile.584$SPS[i] = temp[9,11] party.anteile.584$CVP[i] = temp[2,11] party.anteile.584$FDP[i] = temp[4,11] party.anteile.584$RL[i] = temp[7,11] party.anteile.584$RR[i] = temp[8,11] party.anteile.584$GLP[i] = temp[5,11] party.anteile.584$GPS[i] = temp[6,11] party.anteile.584$BDP[i] = temp[1,11] party.anteile.584$EVP[i] = temp[3,11] } ####################################################################################################################### ########################## VORLAGE 585 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage585 <- data[,c("tweetCreation", "party", "mwst14", "mwst", "tax14", "gastrosuisse", "tva14", "tva", "gastroinitiative", "gastro", "gastroch")] for (word in keywords585) {vorlage585[[word]] <- vorlage585[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage585$tweetCreation <- as.Date(vorlage585$tweetCreation, format='%Y-%m-%d') vorlage585 <- subset(vorlage585, tweetCreation >= as.Date("2014-08-17") & tweetCreation < as.Date("2014-09-28")) # Summe der Tweets nach Parteien sum585 <- aggregate(cbind(mwst14, mwst, tax14, gastrosuisse, tva14, tva, gastroinitiative, gastro, gastroch) ~ party, vorlage585, FUN = sum) for(i in 1:length(sum585[,1])){ sum585$sum[i] = sum(sum585[i,2:(1+length(keywords585))]) } # Anteile Tweets an Gesamtvolumen sum585$Anteile <- sum585$sum / sum(sum585$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage585 <- aggregate(cbind(mwst14, mwst, tax14, gastrosuisse, tva14, tva, gastroinitiative, gastro, gastroch) ~ tweetCreation, vorlage585, FUN = sum) for(i in 1:length(tage585[,1])){ tage585$sum[i] = sum(tage585[i,2:(1+length(keywords585))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.585 = data.frame(cbind(vector_september14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.585) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_september14)){ temp <- subset(vorlage585, tweetCreation == vector_september14[i]) temp <- aggregate(cbind(mwst14, mwst, tax14, gastrosuisse, tva14, tva, gastroinitiative, gastro, gastroch) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords585))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.585$SVP[i] = temp[10,12] party.anteile.585$SPS[i] = temp[9,12] party.anteile.585$CVP[i] = temp[2,12] party.anteile.585$FDP[i] = temp[4,12] party.anteile.585$RL[i] = temp[7,12] party.anteile.585$RR[i] = temp[8,12] party.anteile.585$GLP[i] = temp[5,12] party.anteile.585$GPS[i] = temp[6,12] party.anteile.585$BDP[i] = temp[1,12] party.anteile.585$EVP[i] = temp[3,12] } ####################################################################################################################### ########################## VORLAGE 586 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage586 <- data[,c("tweetCreation", "party", "einheitskasse", "einheitskrankenkasse", "ehk14", "oeffkk", "öffkk", "oefkk", "oekk", "ökk14", "oekk14", "kkch", "caissepublique", "caissech", "caisseunique")] for (word in keywords586) {vorlage586[[word]] <- vorlage586[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage586$tweetCreation <- as.Date(vorlage586$tweetCreation, format='%Y-%m-%d') vorlage586 <- subset(vorlage586, tweetCreation >= as.Date("2014-08-17") & tweetCreation < as.Date("2014-09-28")) # Summe der Tweets nach Parteien sum586 <- aggregate(cbind(einheitskasse, einheitskrankenkasse, ehk14, oeffkk, öffkk, oefkk, oekk, ökk14, oekk14, kkch, caissepublique, caissech, caisseunique) ~ party, vorlage586, FUN = sum) for(i in 1:length(sum586[,1])){ sum586$sum[i] = sum(sum586[i,2:(1+length(keywords586))]) } # Anteile Tweets an Gesamtvolumen sum586$Anteile <- sum586$sum / sum(sum586$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage586 <- aggregate(cbind(einheitskasse, einheitskrankenkasse, ehk14, oeffkk, öffkk, oefkk, oekk, ökk14, oekk14, kkch, caissepublique, caissech, caisseunique) ~ tweetCreation, vorlage586, FUN = sum) for(i in 1:length(tage586[,1])){ tage586$sum[i] = sum(tage586[i,2:(1+length(keywords586))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.586 = data.frame(cbind(vector_september14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.586) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_september14)){ temp <- subset(vorlage586, tweetCreation == vector_september14[i]) temp <- aggregate(cbind(einheitskasse, einheitskrankenkasse, ehk14, oeffkk, öffkk, oefkk, oekk, ökk14, oekk14, kkch, caissepublique, caissech, caisseunique) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords586))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.586$SVP[i] = temp[10,16] party.anteile.586$SPS[i] = temp[9,16] party.anteile.586$CVP[i] = temp[2,16] party.anteile.586$FDP[i] = temp[4,16] party.anteile.586$RL[i] = temp[7,16] party.anteile.586$RR[i] = temp[8,16] party.anteile.586$GLP[i] = temp[5,16] party.anteile.586$GPS[i] = temp[6,16] party.anteile.586$BDP[i] = temp[1,16] party.anteile.586$EVP[i] = temp[3,16] } ####################################################################################################################### ########################## VORLAGE 587 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage587 <- data[,c("tweetCreation", "party", "pauschalbesteuerung", "pauschalsteuer", "forfaitsfiscaux", "pauschalbesteuerungsinitiative")] for (word in keywords587) {vorlage587[[word]] <- vorlage587[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage587$tweetCreation <- as.Date(vorlage587$tweetCreation, format='%Y-%m-%d') vorlage587 <- subset(vorlage587, tweetCreation >= as.Date("2014-10-19") & tweetCreation < as.Date("2014-11-30")) # Summe der Tweets nach Parteien sum587 <- aggregate(cbind(pauschalbesteuerung, pauschalsteuer, forfaitsfiscaux, pauschalbesteuerungsinitiative) ~ party, vorlage587, FUN = sum) for(i in 1:length(sum587[,1])){ sum587$sum[i] = sum(sum587[i,2:(1+length(keywords587))]) } # Anteile Tweets an Gesamtvolumen sum587$Anteile <- sum587$sum / sum(sum587$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage587 <- aggregate(cbind(pauschalbesteuerung, pauschalsteuer, forfaitsfiscaux, pauschalbesteuerungsinitiative) ~ tweetCreation, vorlage587, FUN = sum) for(i in 1:length(tage587[,1])){ tage587$sum[i] = sum(tage587[i,2:(1+length(keywords587))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.587 = data.frame(cbind(vector_november14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.587) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_november14)){ temp <- subset(vorlage587, tweetCreation == vector_november14[i]) temp <- aggregate(cbind(pauschalbesteuerung, pauschalsteuer, forfaitsfiscaux, pauschalbesteuerungsinitiative) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords587))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.587$SVP[i] = temp[10,7] party.anteile.587$SPS[i] = temp[9,7] party.anteile.587$CVP[i] = temp[2,7] party.anteile.587$FDP[i] = temp[4,7] party.anteile.587$RL[i] = temp[7,7] party.anteile.587$RR[i] = temp[8,7] party.anteile.587$GLP[i] = temp[5,7] party.anteile.587$GPS[i] = temp[6,7] party.anteile.587$BDP[i] = temp[1,7] party.anteile.587$EVP[i] = temp[3,7] } ####################################################################################################################### ########################## VORLAGE 588 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage588 <- data[,c("tweetCreation", "party", "ecopop", "ecopopja", "ecopopnein", "dichtestress", "ecopopnon", "ecopopoui")] for (word in keywords588) {vorlage588[[word]] <- vorlage588[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage588$tweetCreation <- as.Date(vorlage588$tweetCreation, format='%Y-%m-%d') vorlage588 <- subset(vorlage588, tweetCreation >= as.Date("2014-10-19") & tweetCreation < as.Date("2014-11-30")) # Summe der Tweets nach Parteien sum588 <- aggregate(cbind(ecopop, ecopopja, ecopopnein, dichtestress, ecopopnon, ecopopoui) ~ party, vorlage588, FUN = sum) for(i in 1:length(sum588[,1])){ sum588$sum[i] = sum(sum588[i,2:(1+length(keywords588))]) } # Anteile Tweets an Gesamtvolumen sum588$Anteile <- sum588$sum / sum(sum588$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage588 <- aggregate(cbind(ecopop, ecopopja, ecopopnein, dichtestress, ecopopnon, ecopopoui) ~ tweetCreation, vorlage588, FUN = sum) for(i in 1:length(tage588[,1])){ tage588$sum[i] = sum(tage588[i,2:(1+length(keywords588))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.588 = data.frame(cbind(vector_november14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.588) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_november14)){ temp <- subset(vorlage588, tweetCreation == vector_november14[i]) temp <- aggregate(cbind(ecopop, ecopopja, ecopopnein, dichtestress, ecopopnon, ecopopoui) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords588))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.588$SVP[i] = temp[10,9] party.anteile.588$SPS[i] = temp[9,9] party.anteile.588$CVP[i] = temp[2,9] party.anteile.588$FDP[i] = temp[4,9] party.anteile.588$RL[i] = temp[7,9] party.anteile.588$RR[i] = temp[8,9] party.anteile.588$GLP[i] = temp[5,9] party.anteile.588$GPS[i] = temp[6,9] party.anteile.588$BDP[i] = temp[1,9] party.anteile.588$EVP[i] = temp[3,9] } ####################################################################################################################### ########################## VORLAGE 589 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage589 <- data[,c("tweetCreation", "party", "goldinitiative", "snb", "gold", "orbns", "or", "bns")] for (word in keywords589) {vorlage589[[word]] <- vorlage589[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # TweetCreation in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage589$tweetCreation <- as.Date(vorlage589$tweetCreation, format='%Y-%m-%d') vorlage589 <- subset(vorlage589, tweetCreation >= as.Date("2014-10-19") & tweetCreation < as.Date("2014-11-30")) # Summe der Tweets nach Parteien sum589 <- aggregate(cbind(goldinitiative, snb, gold, orbns, or, bns) ~ party, vorlage589, FUN = sum) for(i in 1:length(sum589[,1])){ sum589$sum[i] = sum(sum589[i,2:(1+length(keywords589))]) } # Anteile Tweets an Gesamtvolumen sum589$Anteile <- sum589$sum / sum(sum589$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage589 <- aggregate(cbind(goldinitiative, snb, gold, orbns, or, bns) ~ tweetCreation, vorlage589, FUN = sum) for(i in 1:length(tage589[,1])){ tage589$sum[i] = sum(tage589[i,2:(1+length(keywords589))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.589 = data.frame(cbind(vector_november14,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.589) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_november14)){ temp <- subset(vorlage589, tweetCreation == vector_november14[i]) temp <- aggregate(cbind(goldinitiative, snb, gold, orbns, or, bns) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords589))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.589$SVP[i] = temp[10,9] party.anteile.589$SPS[i] = temp[9,9] party.anteile.589$CVP[i] = temp[2,9] party.anteile.589$FDP[i] = temp[4,9] party.anteile.589$RL[i] = temp[7,9] party.anteile.589$RR[i] = temp[8,9] party.anteile.589$GLP[i] = temp[5,9] party.anteile.589$GPS[i] = temp[6,9] party.anteile.589$BDP[i] = temp[1,9] party.anteile.589$EVP[i] = temp[3,9] } ####################################################################################################################### ########################## VORLAGE 590 ################################################################################ ### BEMERKUNG: ab hier: Datensatz data1 verwenden!!! # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage590 <- data1[,c("created", "party", "familieninitiative", "cvpinitiative", "initiativefamille")] for (word in keywords590) {vorlage590[[word]] <- vorlage590[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # created in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage590$created <- as.Date(vorlage590$created, format='%Y-%m-%d') vorlage590 <- subset(vorlage590, created >= as.Date("2015-01-25") & created < as.Date("2015-03-08")) # Summe der Tweets nach Parteien sum590 <- aggregate(cbind(familieninitiative, cvpinitiative, initiativefamille) ~ party, vorlage590, FUN = sum) for(i in 1:length(sum590[,1])){ sum590$sum[i] = sum(sum590[i,2:(1+length(keywords590))]) } # Anteile Tweets an Gesamtvolumen sum590$Anteile <- sum590$sum / sum(sum590$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage590 <- aggregate(cbind(familieninitiative, cvpinitiative, initiativefamille) ~ created, vorlage590, FUN = sum) for(i in 1:length(tage590[,1])){ tage590$sum[i] = sum(tage590[i,2:(1+length(keywords590))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.590 = data.frame(cbind(vector_märz15,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.590) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_märz15)){ temp <- subset(vorlage590, created == vector_märz15[i]) temp <- aggregate(cbind(familieninitiative, cvpinitiative, initiativefamille) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords590))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.590$SVP[i] = temp[10,6] party.anteile.590$SPS[i] = temp[9,6] party.anteile.590$CVP[i] = temp[2,6] party.anteile.590$FDP[i] = temp[4,6] party.anteile.590$RL[i] = temp[7,6] party.anteile.590$RR[i] = temp[8,6] party.anteile.590$GLP[i] = temp[5,6] party.anteile.590$GPS[i] = temp[6,6] party.anteile.590$BDP[i] = temp[1,6] party.anteile.590$EVP[i] = temp[3,6] } ####################################################################################################################### ########################## VORLAGE 591 ################################################################################ # Tabelle umformen und aggregieren der Anzahl Nennungen pro Hashtag pro Tag vorlage591 <- data1[,c("created", "party", "viesm", "energieinitiative", "glpinitiative", "tecontretva", "tva")] for (word in keywords591) {vorlage591[[word]] <- vorlage591[[word]]*1 } # TRUE/FALSE mit 1/O ersetzen # created in Datum ohne Zeitangabe umwandeln, Subset aus Tweets die in Vor-Abstimmungszeit fallen vorlage591$created <- as.Date(vorlage591$created, format='%Y-%m-%d') vorlage591 <- subset(vorlage591, created >= as.Date("2015-01-25") & created < as.Date("2015-03-08")) # Summe der Tweets nach Parteien sum591 <- aggregate(cbind(viesm, energieinitiative, glpinitiative, tecontretva, tva) ~ party, vorlage591, FUN = sum) for(i in 1:length(sum591[,1])){ sum591$sum[i] = sum(sum591[i,2:(1+length(keywords591))]) } # Anteile Tweets an Gesamtvolumen sum591$Anteile <- sum591$sum / sum(sum591$sum) * 100 # Summe der Tweets nach Tagen vor der Abstimmung (gesamt) tage591 <- aggregate(cbind(viesm, energieinitiative, glpinitiative, tecontretva, tva) ~ created, vorlage591, FUN = sum) for(i in 1:length(tage591[,1])){ tage591$sum[i] = sum(tage591[i,2:(1+length(keywords591))]) } # Vorbereitung leerer Dataframe für Resultate (Anteile) party.anteile.591 = data.frame(cbind(vector_märz15,rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42),rep(NA,42))) colnames(party.anteile.591) = c("Tag",unique(accounts$party)) # Loop zum Füllen des Dataframes mit Anteilen pro Tag nach Partei for(i in 1:length(vector_märz15)){ temp <- subset(vorlage591, created == vector_märz15[i]) temp <- aggregate(cbind(viesm, energieinitiative, glpinitiative, tecontretva, tva) ~ party, temp, FUN = sum) for(j in 1:length(temp[,1])){ temp$sum[j] = sum(temp[j,2:(1+length(keywords591))]) } temp$Anteile <- temp$sum / sum(temp$sum) * 100 party.anteile.591$SVP[i] = temp[10,8] party.anteile.591$SPS[i] = temp[9,8] party.anteile.591$CVP[i] = temp[2,8] party.anteile.591$FDP[i] = temp[4,8] party.anteile.591$RL[i] = temp[7,8] party.anteile.591$RR[i] = temp[8,8] party.anteile.591$GLP[i] = temp[5,8] party.anteile.591$GPS[i] = temp[6,8] party.anteile.591$BDP[i] = temp[1,8] party.anteile.591$EVP[i] = temp[3,8] } ################################################################################################################ # Nach JA- und NEIN-Lager (national) sortieren -> in Excel geschehen # Korrelation zwischen Anteil Befürworter auf Twitter und JA-Anteil bei Abstimmung # Einlesen Daten für 2014 correlation <- read.csv("/home/ddj/llauener/Blogbeitrag 2/Grafik4.csv") # Korrelation für 2014 berechnen cor(correlation$twitter, correlation$vorlage)