Aneudis Salcedo

This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.

Process data to gather Tweets from users of

New York City and Washington during election

library('tm')
## Loading required package: NLP
library('RColorBrewer')
library('wordcloud')

# Import data from a csv file to data frame
trump <- read.csv("Trump.csv", comment.char = "#")
userNY <- subset(trump, USER_CITY == "NEW YORK CITY")
userWA <- subset(trump, USER_CITY == "WASHINGTON")

# Save and read data to/from a R data object
saveRDS(userNY, "userNY.RDS")
userNY <- readRDS("userNY.RDS")
saveRDS(userWA, "userWA.RDS")
userWA <- readRDS("userWA.RDS")

tweetsNY <- userNY$MESSAGE_BODY
tweetsWA <- userWA$MESSAGE_BODY

# Function to clean tweets
clean.text = function(x)
{
  # tolower
  x = tolower(x)
  # remove rt
  x = gsub("rt", "", x)
  # remove at
  x = gsub("@\\w+", "", x)
  # remove punctuation
  x = gsub("[[:punct:]]", "", x)
  # remove numbers
  x = gsub("[[:digit:]]", "", x)
  # remove links http
  x = gsub("http\\w+", "", x)
  # remove tabs
  x = gsub("[ |\t]{2,}", "", x)
  # remove blank spaces at the beginning
  x = gsub("^ ", "", x)
  # remove blank spaces at the end
  x = gsub(" $", "", x)
  return(x)
}

# clean tweets
tweetsNY = clean.text(tweetsNY)
tweetsWA = clean.text(tweetsWA)

Word cloud of tweets of NEW YORK users

corpus = Corpus(VectorSource(tweetsNY))
# corpus = Corpus(VectorSource(cmail))
# create term-document matrix
tdm = TermDocumentMatrix(
  corpus,
  control = list(
    wordLengths=c(3,20),
    removePunctuation = TRUE,
    stopwords = c("the", "a", stopwords("english")),
    removeNumbers = TRUE, tolower = TRUE) )

# convert as matrix
tdm = as.matrix(tdm)

# get word counts in decreasing order
word_freqs = sort(rowSums(tdm), decreasing=TRUE) 

#remove the top words which don’t generate insights such as "the", "a", "and", etc.
word_freqs = word_freqs[-(1:9)]  #Here “1” is 1st word in the list we want to remove 

# create a data frame with words and their frequencies
dm = data.frame(word=names(word_freqs), freq=word_freqs)

#Plot corpus in a clored graph; need RColorBrewer package

wordcloud(head(dm$word, 50), head(dm$freq, 50), random.order=FALSE, colors=brewer.pal(8, "Dark2"))

#check top 50 most mentioned words
head(word_freqs, 20)
##    donaldtrump    forelection        retweet         voting      wondering 
##              2              2              2              2              2 
## trumpflprimary           will         bratty          child    gopclowncar 
##              2              2              1              1              1 
##          never     noelection           told      interview           next 
##              1              1              1              1              1 
##      president       standing         states         united         witham 
##              1              1              1              1              1

Word cloud of tweets of WASHINGTON users

##          amp        point   republican       answer          can 
##            3            3            3            2            2 
##          new       theyre     michigan          win         beat 
##            2            2            2            2            2 
##     amiright        tough    nhprimary       trumps         good 
##            2            2            2            2            2 
##  donaldtrump planelection          tax     campaign    thousands 
##            2            2            2            2            2