Downloading tweets...
library(devtools) install_github("streamR", "pablobarbera", subdir="streamR") library(streamR)
This is how it is done...
rastrear = c("Brasil", "Brazil", "congresso", "camara","câmara","senado","voto secreto","voto aberto","deputado","senador","marco civil da internet","neutralidade da rede","aborto","governo","governador","partido político", "partido politico","Renan", "Calheiros", "PMDB", "projeto lei", "PL", "PEC", "constituição", "constituicao","corrupção", "corrupcao", "eleição","eleicao", "eleições", "eleicoes", "eleitoral", "presidente", "presidência", "presidencia", "presidenta", "Dilma Rousseff", "dilmabr", "Lula", "Aécio Neves", "Aecio Neves", "Aecio45Oficial", "AecioNeves", "_AecioNeves_", "AecioNevesbr", "Eduardo Campos", "eduardocampos40", "Marina Silva", "silva_marina", "campanha", "politica", "política", "voto", "vata", "vote", "vot", "votação", "votacao", "CPI", "Petrobras", "Petrobrás", "inflação", "metrô", "metro", "ficha limpa", "ficha suja", "transparência", "transparencia", "governabilidade", "CPI", "comissão parlamentar", "deficiente", "PNE", "portador necessidade", "discurso", "plenária", "plenaria", "educação", "educacao", "saúde", "saude", "PCdoB", "PC do B", "PCdoB_Oficial", "Renato Rabelo", "renatorabelobr", "Alice Portugal", "Alice_Portugal", "Assis Melo", "deputadoassis", "Carlos Eduardo Cadoca", "Cadoca", "Chico Lopes", "Chico_Lopes", "Daniel Almeida", "Delegado Protógenes", "Protógenes", "Evandro Milhomen", "Evandro_Milhomen", "Jandira Feghali", "Jandira", "jandira_feghali", "Jô Moraes", "Jo Moraes", "jomoraes", "João Ananias", "Joao Ananias", "Luciana Santos", "Manuela D'Ávila", "Manuela D'Avila", "Osmar Júnior", "Osmar Junior", "Perpétua Almeida", "Perpétua", "Perpetua Almeida", "Perpetua", "DepPerpetua", "Aldo Rebelo", "aldorebelo", "Eron Bezerra", "EronBezerra65", "Jorge Viana", "JorgeVianaAcre", "Sérgio Petecão", "senadorpetecao", "Gladson Cameli", "DeputadoGladson", "Vanessa Grazziotin", "SouVanessa65", "Cristovam Buarque", "Cristovam", "Buarque", "PDT", "Henrique Eduardo Alves", "Ronaldo Caiado", "deputadocaiado", "Onyx Lorenzoni", "onyxlorenzoni", "Mendonça Filho", "mendonca_filho", "Mandetta", "DepMandetta", "ACM Neto", "acmneto_", "acmneto", "manifestação", "manifestacao", "manifesto", "protesto", "reivindicações", "reivindicacoes", "reivindicação", "reivindicacao", "reivindic") candidatos = read.xlsx(file='../../data/2010_Senador_Nominal_Estados.xlsx', sheetIndex=1, stringsAsFactors = FALSE) rastrear = c(rastrear, gsub('@', '', unique(candidatos$Usuario[!is.na(candidatos$Usuario)]))) candidatos = read.xlsx(file='../../data/2010_Governador_Nominal_Estados.xlsx', sheetIndex=1, stringsAsFactors = FALSE) rastrear = c(rastrear, gsub('@', '', unique(candidatos$Usuario[!is.na(candidatos$Usuario)]))) rastrear = unique(rastrear) candidatos = read.xlsx(file='../../data/2010_Resultado_1oTurno-rnc.xlsx', sheetIndex=1, stringsAsFactors = FALSE) rastrear = c(rastrear, unique(candidatos$Partido)) rastrear = c(rastrear, gsub(' ', '', unique(candidatos$Partido))) rastrear = c(rastrear, "Aecio45Oficial", "Brasil", "Brazil") rastrear = unique(rastrear) rastrear = unique(c(rastrear, 'correios', 'Correios', 'ECT')) save(rastrear, file='../../data/rastrearSemDeputados.Rda') load('../../data/rastrearSemDeputados.Rda') rastrear = c("copa do mundo", "copa 2014", "copa2014", "copadomundo", "worldcup", "world cup", "gol", "futebol", "goal", "football", "soccer", "Brasil", "Brazil", "BRA", "Colômbia", "Colombia", "COL", "BRAvsCOL", "BRAvCOL", "Copa2014", "CopaDoMundo", "WorldCup", "WorldCup2014", "worldcup2014") rastrear = c("copa do mundo", "copa 2014", "copa2014", "copadomundo", "worldcup", "world cup", "gol", "futebol", "goal", "football", "soccer", "Brasil", "Brazil", "BRA", "Alemanha", "ALE", "GER", "BRAvsALE", "BRAvALE", "BRAvsGER", "BRAvGER", "Copa2014", "CopaDoMundo", "WorldCup", "WorldCup2014", "worldcup2014") rastrear = unique(rastrear) save(rastrear, file='../../data/rastrearCopa.Rda') rastrear = c("copa do mundo", "copa 2014", "copa2014", "copadomundo", "worldcup", "world cup", "gol", "futebol", "goal", "football", "soccer", "Brasil", "Brazil", "BRA", "Alemanha", "ALE", "GER", "BRAvsALE", "BRAvALE", "BRAvsGER", "BRAvGER", "Copa2014", "CopaDoMundo", "WorldCup", "WorldCup2014", "worldcup2014") rastrear = unique(rastrear) save(rastrear, file='../../data/rastrearCopa2.Rda') rastrear = gsub('@', '', unique(candidatos$Usuario[!is.na(candidatos$Usuario)])) save(rastrear, file='../../data/rastrearSoDeputados.Rda') load('../../data/rastrearSoDeputados.Rda') ## Coloquei alguns deputados no SemDeputados e salvei o restante em rastrear2.Rda save(rastrear, file='../../data/rastrear2.Rda') load('../../data/rastrear2.Rda') load('../../data/rastrear.Rda') load('../../data/rastrearSemDeputados.Rda') load('../../data/cred_fernando.Rda') # registerTwitterOAuth(cred) days = 1 hours = 1 minutes = 10 seconds = 60 dataFinal = as.Date('2014-12-31') hoje = Sys.Date() load("../../data/cred.Rda") while (hoje <= dataFinal) { hoje = Sys.Date() print(hoje) arquivo = paste0("../../data/politics-tweets-", hoje, ".json") print(arquivo) load('../../data/rastrearSemDeputados.Rda') print(rastrear) filterStream(arquivo, track = rastrear, timeout = days*hours*minutes*seconds, oauth = cred, language='pt') } load("../../data/cred_fernando.Rda") while (hoje <= dataFinal) { hoje = Sys.Date() print(hoje) arquivo = paste0("../../data/politics-tweets-", hoje, "-2.json") print(arquivo) load('../../data/rastrear2.Rda') print(rastrear) filterStream(arquivo, track = rastrear, timeout = days*hours*minutes*seconds, oauth = cred, language='pt') } ## LIBERDADES CIVIS rastrear = c("liberdades civis", "liberdade civil", "liberdades individuais", "liberdade individual", "aborto", "estatuto do nascituro", "descriminalização maconha", "descriminalizacao maconha", "descriminalizar maconha", "guerra drogas", "liberdade religiosa", "estado laico", "ordem pública", "ordem publica", "divórcio", "divorcio", "planejamento familiar") ## SEGURANÇA PÚBLICA rastrear = c(rastrear, "seguranca publica", "segurança pública", "valorização polícia", "valorizacao policia", "valorizacao polícia", "valorização polícia", "processual penal", "guerra drogas", "desmilitarização polícia", "desmilitarizacao policia", "desmilitarizacao polícia", "desmilitarização policia", "maioridade penal", "penitenciária", "penitenciaria", "combate organizações criminosas", "combate organizacoes criminosas", "sistema prisional", "setor prisional", "PEC 300", "PEC300", "unificar polícias", "unificar policias", "unificação polícias", "unificação policias", "unificacao polícias", "unificacao policias", "população carcerária", "populacao carcerária", "população carceraria", "populacao carceraria", "pena alternativa", "penas alternativas", "tráfico drogas", "trafico drogas", "crime organizado") rastrear = unique(rastrear) save(rastrear, file='../../data/rastrear_liberdade_seguranca.Rda') load("../../data/cred_izabela.Rda") while (hoje <= dataFinal) { hoje = Sys.Date() print(hoje) arquivo = paste0("../../data/liberdade-seguranca-tweets-", hoje, ".json") print(arquivo) load('../../data/rastrear_liberdade_seguranca.Rda') print(rastrear) filterStream(arquivo, track = rastrear, timeout = days*hours*minutes*seconds, oauth = cred, language='pt') } while (hoje <= dataFinal) { hoje = Sys.Date() print(hoje) arquivo = paste0("../../data/politics-tweets-", hoje, "-copa.json") print(arquivo) load('../../data/rastrearCopa.Rda') print(rastrear) filterStream(arquivo, track = rastrear, timeout = days*hours*minutes*seconds, oauth = cred, language='pt') } while (hoje <= dataFinal) { hoje = Sys.Date() print(hoje) arquivo = paste0("../../data/politics-tweets-", hoje, "-copa.json") print(arquivo) load('../../data/rastrearCopa2.Rda') print(rastrear) filterStream(arquivo, track = rastrear, timeout = days*hours*minutes*seconds, oauth = cred, language='pt') } ?filterStream date() tweets.df <- parseTweets("../../data/politics-tweets-2014-05-14.json", simplify = TRUE) tweets.df <- rbind(tweets.df, parseTweets("../../data/politics-tweets-2014-01-25.json", simplify = TRUE)) tweets.df <- rbind(tweets.df, parseTweets("../../data/politics-tweets-2014-01-29.json", simplify = TRUE)) tweets.df <- rbind(tweets.df, parseTweets("../../data/politics-tweets-2014-02-02.json", simplify = TRUE)) tweets.df <- rbind(tweets.df, parseTweets("../../data/politics-tweets-2013-11-09.json", simplify = TRUE)) ignorarData = '16/06' datas = seq(as.Date('2014-05-16'), as.Date('2014-06-15'), by = 1) tweets = t source('funcoesTwitter.R') tweets = loadTweets() tweets$created_at[1:10] tweets$created_at2 = strptime(tweets$created_at, "%a %b %d %H:%M:%S %z %Y") tweets$created_at2[1:10] perpetua = tweets[tweets$screen_name == 'DepPerpetua',] perpetua[,c('created_at', 'followers_count', 'favourites_count', 'friends_count')] perpetua = rbind(perpetua, tweets[grep("Perpétua Almeida|Perpetua Almeida|Deputada Perpétua|Deputada Perpetua|DepPerpetua", tweets$text, ignore.case=TRUE),]) refPerpetua = referenceByDay(perpetua) refPerpetua = refPerpetua[refPerpetua$Dia != ignorarData,] refPerpetua votosRecebidos2010 = 33235 refPerpetua$Referências = refPerpetua$Referências / votosRecebidos2010 * 100 refPerpetua$Referências = refPerpetua$Referências / votosSenador2010[votosSenador2010$estado == "AC",2] * 100000 refPerpetua$Referências jandira = tweets[tweets$screen_name == 'jandira_feghali',] jandira[,c('created_at', 'followers_count', 'favourites_count', 'friends_count')] jandira = rbind(jandira, tweets[grep("Jandira Feghali|Deputada Jandira|jandira_feghali", tweets$text, ignore.case=TRUE),]) refJandira = referenceByDay(jandira) refJandira = refJandira[refJandira$Dia != ignorarData,] votosRecebidos2010 = 146260 refJandira$Referências = refJandira$Referências / votosRecebidos2010 * 100 refJandira$Referências = refJandira$Referências / votosSenador2010[votosSenador2010$estado == "RJ",2] * 100000 refJandira jo = tweets[tweets$screen_name == 'jomoraes',] jo[,c('created_at', 'followers_count', 'favourites_count', 'friends_count')] jo = rbind(jo, tweets[grep("Jô Moraes|Jo Moraes|jomoraes", tweets$text, ignore.case=TRUE),]) refJo = referenceByDay(jo) refJo = refJo[refJo$Dia != ignorarData,] votosRecebidos2010 = 105977 refJo$Referências = refJo$Referências / votosRecebidos2010 * 100 refJo$Referências = refJo$Referências / votosSenador2010[votosSenador2010$estado == "MG",2] * 100000 refJo "PCdoB", "PC do B", "PCdoB_Oficial", "Renato Rabelo", "renatorabelobr", "Alice Portugal", "Alice_Portugal", "Assis Melo", "deputadoassis", "Carlos Eduardo Cadoca", "Cadoca", "Chico Lopes", "Chico_Lopes", "Daniel Almeida", "Daniel_PCdoB", "Delegado Protógenes", "Protógenes", "Evandro Milhomen", "Evandro_Milhomen", "DepMilhomen" "Aldo Rebelo", "aldorebelo" votosSenador2010 = data.frame(estado = c("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO"), quantidade = c(647203,2516128,2940331,65233,11714186,7402395,2236246,3496069,4896460,5425408,19159371,2369390,2894203,4483459,3462215,7882490,3067142,10827579,14706917,2975476,1403973,424456,11514692,6273594,1855805,36778771,1000729)) votosSenador2010[votosSenador2010$estado == "AC",] refPerpetua$grupo = 'Perpétua' refJandira$grupo = 'Jandira' refJo$grupo = 'Jô Moraes' dados = rbind(refPerpetua, refJandira, refJo) dados$Dia = as.Date(dados$Dia, format="%d/%m") dados plotReferencias(dados) dadosProporcionais = dados plotReferencias(dadosProporcionais) dadosPorVotoRecebido = rbind(refPerpetua, refJandira, refJo) dadosPorVotoRecebido$Dia = as.Date(dadosPorVotoRecebido$Dia, format="%d/%m") dadosPorVotoRecebido plotReferencias(dadosPorVotoRecebido) source('funcoesTwitter.R', encoding='UTF-8') tweets = t usuarios = data.frame(usuario=c('DepPerpetua', 'jandira_feghali', 'jomoraes', 'aldorebelo', 'renatorabelobr'), nome=c('Perpétua', 'Jandira', 'Jô Moraes', 'Aldo Rebelo', 'Renato Rabelo')) datas = seq(as.Date('2014-05-16'), as.Date('2014-06-15'), by = 1) stats = statsByUser(tweets, usuarios, 'diferenca', datas) stats = statsByUser(tweets, usuarios, 'novos', datas) stats = statsByUser(tweets, usuarios, 'todos', datas) plotStats(stats) require(xlsx) senador = read.xlsx(file='../../data/2010_Senador_Nominal_Estados.xlsx', sheetIndex=1, stringsAsFactors = FALSE) senador = ajustarDataExcel(senador) str(senador) resultados1 = read.xlsx(file='../../data/2010_Resultado_1oTurno.xlsx', sheetIndex=1, stringsAsFactors = FALSE) resultados1 = read.xlsx(file='../../data/2010_Resultado_1oTurno-rnc.xlsx', sheetIndex=1, stringsAsFactors = FALSE) resultados1 = ajustarDataExcel(resultados1) str(resultados1) resultados2 = read.xlsx(file='../../data/2010_Resultado_2oTurno.xlsx', sheetIndex=1, stringsAsFactors = FALSE) str(resultados2) votos1 = read.xlsx(file='../../data/2010_Votos_1oTurno.xlsx', sheetIndex=1, stringsAsFactors = FALSE) str(votos1) votos2 = read.xlsx(file='../../data/2010_Votos_2oTurno.xlsx', sheetIndex=1, stringsAsFactors = FALSE) str(votos2) dados = resultados1 dados = senador r = dados[!is.na(dados$Data.Ultimo.Tweet) & dados$Data.Ultimo.Tweet > (dados$Data.Recuperacao - 30) & !is.na(dados$Quantidade.Seguidores),] r = dados[!is.na(dados$Data.Ultimo.Tweet) & dados$Data.Ultimo.Tweet > (dados$Data.Recuperacao - 30) & !is.na(dados$Quantidade.Seguidores) & dados$Quantidade.Seguidores > 500 & dados$Quantidade.Tweets > 500,] r = dados[!is.na(dados$Data.Ultimo.Tweet) & dados$Data.Ultimo.Tweet > (dados$Data.Recuperacao - 30) & !is.na(dados$Quantidade.Seguidores) & dados$Quantidade.Seguidores < 50000,] r = dados[!is.na(dados$Data.Ultimo.Tweet) & dados$Data.Ultimo.Tweet > as.Date('2014-01-01') & !is.na(dados$Quantidade.Seguidores),] require(MASS) r[r$Quantidade.Seguidores == max(r$Quantidade.Seguidores),] r = r[r$Quantidade.Seguidores != max(r$Quantidade.Seguidores),] r = r[r$Quantidade.Seguidores != min(r$Quantidade.Seguidores),] r = r[r$VotacaoNominal != max(r$VotacaoNominal),] lm1 = lm(VotacaoNominal ~ Quantidade.Seguidores + UF, data = r) lm1 = lm(VotacaoNominal ~ Quantidade.Seguidores, data = r) lm1 = rlm(VotacaoNominal ~ Quantidade.Seguidores + UF, data = r) lm1 = rlm(VotacaoNominal ~ Quantidade.Seguidores, data = r) lm1 = glm(VotacaoNominal ~ Quantidade.Seguidores + UF, data = r) lm1 = glm(VotacaoNominal ~ Quantidade.Seguidores, data = r) summary(lm1) plot(r$Quantidade.Seguidores, r$VotacaoNominal) abline(lm1) plot(lm1) r[r$Usuario == 'DepPerpetua',]$Quantidade.Seguidores * lm1$coefficients[2] + lm1$coefficients[1] 2609 * lm1$coefficients[2] + lm1$coefficients[1] lm1$coefficients require(ggplot2) require(rCharts) dat = fortify(lm1) dat names(dat) = gsub('\\.', '_', names(dat)) dat$Candidato = r$Candidato dat$UF = as.factor(r$UF) dat$Cargo = r$Cargo p1 <- rPlot(VotacaoNominal ~ Quantidade_Seguidores, data = dat, type = 'point') p1 <- rPlot(VotacaoNominal ~ Quantidade_Seguidores, data = dat, type = 'point', color = 'UF', tooltip = "#! function(item){ return 'Quantidade de Seguidores: ' + item.Quantidade_Seguidores + '\\nVotação Nominal: ' + item.VotacaoNominal + '\\n' + item.Cargo + ' / ' + item.UF + ': ' + item.Candidato } !#") p1$layer(y = '_fitted', copy_layer = T, type = 'line', color = list(const = 'red'), tooltip = "#! function(item){ return item._fitted } !#") # format the x and y axis labels p1$guides(x = list(title = "Seguidores no Twitter (mil)", max = 1.05*max(dat$Quantidade_Seguidores))) p1$guides(y = list(title = "Votos Recebidos (milhão)", max = 1.05*max(dat$VotacaoNominal))) p1$set(title = "Correlação entre Votos Recebidos e Quantidade de Seguidores dos Senadores Eleitos em 2010") p1$guides(color = list( numticks = length( levels( dat$UF ) ), labels = as.character( levels( dat$UF ) ) )) p1 # p1$setTemplate( # afterScript = # '<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script>' # ) html <- p1$render() html <- gsub("\\\\", "\\", html, fixed=T) tf <- tempfile(fileext = ".html") cat(html, file=tf) browseURL(tf) dadosPerfil = data.frame(grupo = c("Senadores com Perfil Ativo no Twitter", "Senadores com Perfil Inativo no Twitter", "Senadores sem Perfil no Twitter"), valor = c(40, 49 - 40, 54 - 49)) n3 = nPlot(x = "grupo", y = "valor", data = dadosPerfil, type = "pieChart") # n3$templates$script <- "http://timelyportfolio.github.io/rCharts_nvd3_templates/chartWithTitle_styled.html" # n3$set(title = "Perfil Ativo/Inativo dos Senadores Eleitos em 2010 no Twitter") n3$chart(showLabels=FALSE) n3 html <- n3$render() html <- gsub("\\\\", "\\", html, fixed=T) tf <- tempfile(fileext = ".html") cat(html, file=tf) browseURL(tf) source('funcoesTwitter.R') tweets = loadTweets() usuarios = data.frame(usuario=c('dilmabr', 'AecioNeves', 'eduardocampos40', 'silva_marina'), nome=c('Dilma', 'Aécio', 'Eduardo', 'Marina')) datas = seq(as.Date('2014-05-16'), as.Date('2014-06-15'), by = 1) statsPresidente = statsByUser(tweets, usuarios, 'diferenca', datas) statsPresidente = statsByUser(tweets, usuarios, 'novos', datas) statsPresidente = statsByUser(tweets, usuarios, 'todos', datas) plotStats(statsPresidente) ## Gráfico de menções dos candidatos à presidência usuarios = data.frame(usuario=c('dilmabr', 'AecioNeves', 'eduardocampos40', 'silva_marina'), nome=c('Dilma', 'Aécio', 'Eduardo', 'Marina'), palavras=c('Dima Rouseff','Aécio Neves|Aecio Neves','Eduardo Campos','Marina Silva')) refs = referencesByUser(tweets, usuarios, datas) plotReferencias(refs) ## Gráfico de menções dos candidatos à presidência, agrupando Eduardo e Marina refs2 = refs refs2$grupo = as.character(refs2$grupo) refs2[refs2$grupo == 'Eduardo',]$Referencias = refs2[refs2$grupo == 'Eduardo',]$Referencias + refs2[refs2$grupo == 'Marina',]$Referencias refs2[refs2$grupo == 'Eduardo',]$grupo = 'Eduardo e Marina' refs2 = refs2[refs2$grupo != 'Marina',] refs2 plotReferencias(refs2) pcdob = tweets.df[grep("PCdoB|PC do B|PCdoB_Oficial", tweets.df$text),] asilo = tweets.df[grep("asilo| DEM |democratas|Democratas", tweets.df$text),] eleicoes = tweets[grep("eleicao|eleição|eleicoes|eleições|presidente|presidência|presidencia|presidenta|Dilma Rousseff|Aécio Neves|Aecio Neves|Eduardo Campos|Marina Silva", tweets$text, ignore.case=TRUE),] eleicoes = tweets[grep("eleicao|eleição|eleicoes|eleições|Dilma Rousseff|Aécio Neves|Aecio Neves|Eduardo Campos|Marina Silva", tweets$text, ignore.case=TRUE),] nrow(asilo) asilo$text
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.