<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/unsupervised-learning-and-text-mining-of-emotion-terms-using-r/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://datascienceplus.com/unsupervised-learning-and-text-mining-of-emotion-terms-using-r/"> R Programming – DataScience+</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>Unsupervised learning refers to data science approaches that involve learning without a prior knowledge about the classification of sample data. In Wikipedia, unsupervised learning has been described as “the task of inferring a function to describe hidden structure from ‘unlabeled’ data (a classification of categorization is not included in the observations)”. The overarching objectives of this post were to evaluate and understand the co-occurrence and/or co-expression of emotion words in individual letters, and if there were any differential expression profiles /patterns of emotions words among the 40 annual shareholder letters? Differential expression of emotion words was being used to refer to quantitative differences in emotion word frequency counts among letters, as well as qualitative differences in certain emotion words occurring uniquely in some letters but not present in others. </p>
<h2> The dataset </h2>
<p>This is the second part to a companion <a rel="nofollow" href="https://datascienceplus.com/parsing-text-for-emotion-terms-analysis-visualization-using-r/" target="_blank">post</a> I have on “parsing textual data for emotion terms”. As with the first post, the raw text data set for this analysis was using Mr. Warren Buffett’s annual shareholder <a rel="nofollow" href="http://www.berkshirehathaway.com/letters" target="_blank">letters</a> in the past 40-years (1977 – 2016). The R code to retrieve the letters was from <a rel="nofollow" href="http://michaeltoth.me/sentiment-analysis-of-warren-buffetts-letters-to-shareholders.html" target="_blank">here.</a></p>
<pre>
## Retrieve the letters  
library(pdftools)      
library(rvest)       
library(XML)
# Getting &amp; Reading in HTML Letters
urls_77_97 &lt;- paste('http://www.berkshirehathaway.com/letters/', seq(1977, 1997), '.html', sep='')
html_urls &lt;- c(urls_77_97,
               'http://www.berkshirehathaway.com/letters/1998htm.html',
               'http://www.berkshirehathaway.com/letters/1999htm.html',
               'http://www.berkshirehathaway.com/2000ar/2000letter.html',
               'http://www.berkshirehathaway.com/2001ar/2001letter.html')

letters_html &lt;- lapply(html_urls, function(x) read_html(x) %>% html_text())
# Getting &amp; Reading in PDF Letters
urls_03_16 &lt;- paste('http://www.berkshirehathaway.com/letters/', seq(2003, 2016), 'ltr.pdf', sep = '')
pdf_urls &lt;- data.frame('year' = seq(2002, 2016),
                       'link' = c('http://www.berkshirehathaway.com/letters/2002pdf.pdf', urls_03_16))
download_pdfs &lt;- function(x) {
  myfile = paste0(x['year'], '.pdf')
  download.file(url = x['link'], destfile = myfile, mode = 'wb')
  return(myfile)
}
pdfs &lt;- apply(pdf_urls, 1, download_pdfs)
letters_pdf &lt;- lapply(pdfs, function(x) pdf_text(x) %>% paste(collapse=&quot; &quot;))
tmp &lt;- lapply(pdfs, function(x) if(file.exists(x)) file.remove(x)) 
# Combine letters in a data frame
letters &lt;- do.call(rbind, Map(data.frame, year=seq(1977, 2016), text=c(letters_html, letters_pdf)))
letters$text &lt;- as.character(letters$text)
</pre>
<h2> Analysis of emotions terms usage </h2>
<pre>
## Load additional required packages
require(tidyverse)
require(tidytext)
require(gplots)
require(SnowballC)
require(sqldf)
theme_set(theme_bw(12))
### pull emotion words and aggregate by year and emotion terms

emotions &lt;- letters %>%
  unnest_tokens(word, text) %>%                           
  anti_join(stop_words, by = &quot;word&quot;) %>%                  
  filter(!grepl('[0-9]', word)) %>%
  left_join(get_sentiments(&quot;nrc&quot;), by = &quot;word&quot;) %>%
  filter(!(sentiment == &quot;negative&quot; | sentiment == &quot;positive&quot;)) %>%
  group_by(year, sentiment) %>%
  summarize( freq = n()) %>%
  mutate(percent=round(freq/sum(freq)*100)) %>%
  select(-freq) %>%
  spread(sentiment, percent, fill=0) %>%
  ungroup()
## Normalize data 
sd_scale &lt;- function(x) {
     (x - mean(x))/sd(x)
 }
emotions[,c(2:9)] &lt;- apply(emotions[,c(2:9)], 2, sd_scale)
emotions &lt;- as.data.frame(emotions)
rownames(emotions) &lt;- emotions[,1]
emotions3 &lt;- emotions[,-1]
emotions3 &lt;- as.matrix(emotions3)
## Using a heatmap and clustering to visualize and profile emotion terms expression data

heatmap.2(
     emotions3,
     dendrogram = &quot;both&quot;,
     scale      = &quot;none&quot;,
     trace      = &quot;none&quot;,
     key        = TRUE,
     col    = colorRampPalette(c(&quot;green&quot;, &quot;yellow&quot;, &quot;red&quot;))
 )
</pre>
<p>Heatmap and clustering:<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Heatmap_Fig1.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Heatmap_Fig1-490x370.png?w=450&ssl=1" alt="" class="wp-image-6482" data-recalc-dims="1"></a></p>
<p>The colors of the heatmap represent high levels of emotion terms expression (red), low levels of emotion terms expression (green) and average or moderate levels of emotion terms expression (yellow).</p>
<h2> Co-expression profiles of emotion words usage </h2>
<p>Based on the expression profiles combined with the vertical dendrogram, there are about four co-expression profiles of emotion terms: i) emotion terms referring to fear and sadness appeared to be co-expressed together, ii) anger and disgust showed similar expression profiles and hence were co-expressed emotion terms; iii) emotion terms referring to joy, anticipation and surprise appeared to be similarly expressed, and iv) emotion terms referring to trust did show the least co-expression pattern.</p>
<h2> Emotion expression profiling of annual shareholder letters </h2>
<p>Looking at the horizontal dendrogram and heatmap above, approximately six groups of emotions expressions profiles can be recognized among the 40 annual shareholder letters.<br>
Group-1 letters showed over-expression of emotion terms referring to anger, disgust, sadness or fear. Letters of this group included 1982, 1987, 1989 &amp; 2003 (first 4 rows of the heatmap).<br>
Group-2 and group-3 letters showed over-expression of emotion terms referring to surprise, disgust, anger and sadness. Letters of this group included 1985, 1994, 1996, 1998, 2010, 2014, 2016, 1990 – 1993, 2002, 2004, 2005 &amp; 2015 (rows 5 – 19 of the heatmap).<br>
Group-4 letters showed over-expression of emotion terms referring to surprise, joy and anticipation. Letters of this group included 1995, 1997 – 2000, 2006, 2007, 2009 &amp; 2011 – 2013 (rows 20 – 30).<br>
Group-5 letters showed over-expression of emotion terms referring to fear, sadness, anger and disgust. Letters of this group included 1984, 1986, 2001 &amp; 2008 (rows 31 – 34).<br>
Group-6 letters showed over-expression of emotion terms referring to trust. Letters of this group included those of the early letters (1977 – 1981 &amp; 1983) (rows 35 – 40).</p>
<h2> Numbers of emotion terms expressed uniquely or in common among the heatmap groups </h2>
<p>The next steps of the analysis attempted to determine the numbers of emotion words that were uniquely expressed in any of the heatmap groups. Also wanted to see if some emotion words were expressed in all of the heatmap groups, if any? For these analyses, I chose to include a word stemming procedure. Wikipedia described word stemming as “the process of reducing inflected (or sometimes derived) words to their word stem, base or root form- generally a written word form”. In practice, the stemming step removes word endings such as “es”, “ed” and “’s”, so that the various word forms would be taken as same when considering uniqueness and/or counting word frequency (see the example below for before and after applying word stemmer function in R). </p>
<h3> Examples of word stemmer output </h3>
<p>There are several word stemmers in R. One such function, the wordStem, in the SnowballC package extracts the stems of each of the given words in a vector (See example below). </p>
<pre>
Before &lt;- c(&quot;produce&quot;,  &quot;produces&quot;, &quot;produced&quot;, &quot;producing&quot;, &quot;product&quot;, &quot;products&quot;, &quot;production&quot;)
wstem &lt;- as.data.frame(wordStem(Before))
names(wstem) &lt;- &quot;After&quot;
pander::pandoc.table(cbind(Before, wstem))
<em>Here is the example output for stemming
## ------------------
## Before After ## ---------- -------
## produce produc ## ## produces produc ## ## produced produc ## ## producing produc ## ## product product
## ## products product
## ## production product
## ------------------
</em>
</pre>
<h2> Analysis of unique and commonly expressed emotion words </h2>
<pre>
## pull emotions words for selected heatmap groups and apply stemming
set.seed(456)
emotions_final &lt;- letters  %>%
   unnest_tokens(word, text) %>% 
filter(!grepl('[0-9]', word)) %>%                          
   left_join(get_sentiments(&quot;nrc&quot;), by = &quot;word&quot;) %>%
filter(!(sentiment == &quot;negative&quot; | sentiment == &quot;positive&quot; | sentiment == &quot;NA&quot;)) %>%
subset(year==1987 | year==1989 |  year==2001 |  year==2008 | year==2012 | year==2013) %>%
mutate(word = wordStem(word)) %>%
ungroup()
group1 &lt;- emotions_final %>% 
     subset(year==1987| year==1989 ) %>%
     select(-year, -sentiment) %>%
     unique()
set.seed(456)
group4 &lt;- emotions_final %>% 
     subset(year==2012 | year==2013) %>%
     select(-year, -sentiment) %>%
     unique()
set.seed(456)
group5 &lt;- emotions_final %>%
     subset(year==2001 | year==2008 ) %>%
     select(-year, -sentiment) %>%
     unique()
</pre>
<h2> Unique and common emotion words among two groups </h2>
<p>Let’s draw a two-way Venn diagram to find out which emotions terms were unique or commonly expressed between heatmap group-1 &amp; group-4.</p>
<pre>
# common and unique words between two groups
emo_venn2 &lt;- venn(list(group1$word, group4$word))
</pre>
<p>Two-way Venn diagram:<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/venn2_Fig2.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/05/venn2_Fig2-490x293.png?w=450&ssl=1" alt="" class="wp-image-6483" data-recalc-dims="1"></a></p>
<p>A total of 293 emotion terms were expressed in common between group-1 (A) and group-4 (B). There were also 298 and 162 unique emotion words usage in heatmap groups-1 &amp; 4, respectively. </p>
<h2> Unique and common emotion words among three groups </h2>
<p>Let’s draw a three way Venn diagram to find out which emotions terms were uniquely or commonly expressed among group-1, group-4 &amp; group-5.</p>
<pre>
# common and unique words among three groups
emo_venn3 &lt;- venn(list(group1$word, group4$word, group5$word))
</pre>
<p>Three way Venn diagram:<br>
<a rel="nofollow" href="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/05/venn3_Fig3.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/venn3_Fig3-490x293.png?w=450&ssl=1" alt="" class="wp-image-6484" data-recalc-dims="1"></a><br>
A total of 225 emotion terms were expressed in common among the three heatmap groups. On the other hand, there were 193, 108 and 159 unique emotion words usage in heatmap group-1 (A), group-4 (B) and group-5 (C), respectively. The Venn diagram included various combinations of unique and common emotion word expressions. Of particular interest were the 105 emotion words that were expressed in common between heatmap group-1 and group-5. Recall that group-1 &amp; group-5 were highlighted for their high expression of emotions referring to disgust, anger, sadness and fear. </p>
<p>I also wanted to see a list of those emotion words that were expressed uniquely and/or in common among several groups. For instance the R code below requested for a list of the 109 unique emotion words that were expressed solely in group-5 letters of the 2001 &amp; 2008.</p>
<pre>
## The code below pulled a list of all common/unique emotion words expressed
## in all possible combinations of the the three heatmap groups
venn_list &lt;- (attr(emo_venn3, &quot;intersection&quot;))
## and then print only the list of unique emotion words expressed in group-5.
print(venn_list$'C')
<em>## [1] &quot;manual&quot; &quot;familiar&quot; &quot;sentenc&quot; ## [4] &quot;variabl&quot; &quot;safeguard&quot; &quot;abu&quot; ## [7] &quot;egregi&quot; &quot;gorgeou&quot; &quot;hesit&quot; ## [10] &quot;strive&quot; &quot;loyalti&quot; &quot;loom&quot; ## [13] &quot;approv&quot; &quot;like&quot; &quot;winner&quot; ## [16] &quot;entertain&quot; &quot;tender&quot; &quot;withdraw&quot; ## [19] &quot;harm&quot; &quot;strike&quot; &quot;straightforward&quot;
## [22] &quot;victim&quot; &quot;iron&quot; &quot;bounti&quot; ## [25] &quot;chaotic&quot; &quot;bloat&quot; &quot;proviso&quot; ## [28] &quot;frank&quot; &quot;honor&quot; &quot;child&quot; ## [31] &quot;lemon&quot; &quot;prospect&quot; &quot;relev&quot; ## [34] &quot;threaten&quot; &quot;terror&quot; &quot;quak&quot; ## [37] &quot;scarciti&quot; &quot;question&quot; &quot;manipul&quot; ## [40] &quot;deton&quot; &quot;terrorist&quot; &quot;attack&quot; ## [43] &quot;ill&quot; &quot;nation&quot; &quot;hydra&quot; ## [46] &quot;disast&quot; &quot;sadli&quot; &quot;prolong&quot; ## [49] &quot;concern&quot; &quot;urgenc&quot; &quot;presid&quot; </em>
</pre>
<p>The output from the above code included a list of 159 words, but the list above contained only the first 51 for space considerations. Besides, you may have noticed that some of the emotions words were truncated and did not look proper words due to stemming.</p>
<h2> Dispersion Plot </h2>
<p>Dispersion plot is a graphical display that can be used to represent the approximate locations and densities of emotion terms across the length of the text document. Shown below are three dispersion plots of unique emotion words of heatmap group-1 (1987, 1989), group-5 (2001, 2008) and group-4 (2012 and 2013) shareholder letters. For the dispersion plots, all words in the listed years were sequentially ordered by year of the letters and the presence and approximate locations of the unique words were identified/displayed by a stripe. Each stripe represented an instance of a unique word in the shareholder letters. </p>
<p><strong> Confirmation of emotion words expressed uniquely in heatmap group-1 </strong></p>
<pre>
## Confirmation of unique emotion words in heatmap group-1
group1_U &lt;- as.data.frame(venn_list$'A')
names(group1_U) &lt;- &quot;terms&quot;
uniq1 &lt;- sqldf( &quot;select t1.*, g1.terms
from emotions_final t1
left join
group1_U g1
on t1.word = g1.terms &quot;
)
uniq1a &lt;- !is.na(uniq1$terms)
uniqs1 &lt;- rep(NA, length(emotions_final))
uniqs1[uniq1a] &lt;- 1
plot(uniqs1, main=&quot;Dispersion plot of emotions words \n unique to heatmap group 1 &quot;, xlab=&quot;Length (Word count)&quot;, ylab=&quot; &quot;, col=&quot;red&quot;, type='h', ylim=c(0,1), yaxt='n')
</pre>
<p>Heatmap plot:<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig4.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig4-490x174.png?w=450&ssl=1" alt="" class="wp-image-6485" data-recalc-dims="1"></a></p>
<p>Heatmap group-1 letters included those in 1987/1989. As expected, the dispersion plot above confirmed that the unique emotion words in group-1 were confined at the start of the dispersion plot. </p>
<p><strong> Confirmation of emotion words expressed uniquely in heatmap group-5 </strong></p>
<pre>
## confirmation of unique emotion words in heatmap group-5  
group5_U &lt;- as.data.frame(venn_list$'C')
names(group5_U) &lt;- &quot;terms&quot;
uniq5 &lt;- sqldf( &quot;select t1.*, g5.terms
from emotions_final t1
left join
group5_U g5
on t1.word = g5.terms &quot;
)
uniq5a &lt;- !is.na(uniq5$terms)
uniqs5 &lt;- rep(NA, length(emotions_final))
uniqs5[uniq5a] &lt;- 1
 
plot(uniqs5, main=&quot;Dispersion plot of emotions words \n unique to heatmap group 5 &quot;, xlab=&quot;Length (Word count)&quot;, ylab=&quot; &quot;, col=&quot;red&quot;, type='h', ylim=c(0,1), yaxt='n')
</pre>
<p>Dispersion plot of emotions words:<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig5.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig5-490x174.png?w=450&ssl=1" alt="" class="wp-image-6486" data-recalc-dims="1"></a></p>
<p>Heatmap group-5 letters included those in 2001 &amp; 2008. As expected, the dispersion plot above confirmed that the unique emotion words in group-5 were confined at the middle parts of the dispersion plot. </p>
<p><strong> Confirmation of emotion words expressed uniquely in heatmap group-4 </strong></p>
<pre>
## confirmation of unique emotion words in heatmap group-4 
group4_U &lt;- as.data.frame(venn_list$'B')
names(group4_U) &lt;- &quot;terms&quot;
uniq4 &lt;- sqldf( &quot;select t1.*, g4.terms
from emotions_final t1
left join
group4_U g4
on t1.word = g4.terms &quot;
)
uniq4a &lt;- !is.na(uniq4$terms)
uniqs4 &lt;- rep(NA, length(emotions_final))
uniqs4[uniq4a] &lt;- 1

plot(uniqs4, main=&quot;Dispersion plot of emotions words \n unique to heatmap group 4 &quot;, xlab=&quot;Length (Word count)&quot;, ylab=&quot; &quot;, col=&quot;red&quot;, type='h', ylim=c(0,1), yaxt='n')
</pre>
<p>Dispersion plot of emotions words:<br>
<a rel="nofollow" href="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig6.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i0.wp.com/datascienceplus.com/wp-content/uploads/2017/05/Dispersion_Fig6-490x174.png?w=450&ssl=1" alt="" class="wp-image-6487" data-recalc-dims="1"></a></p>
<p>Heatmap group4 letters included those in 2012 &amp; 2013. As expected, the dispersion plot above confirmed that the unique emotion words in group-4 were confined towards the end of the dispersion plot. </p>
<h2> Annual Returns on Investment in S&amp;P500 (1977 – 2016) </h2>
<p>Finally a graph of the annual returns on investment in S&amp;P 500 during the same 40 years of the annual shareholder letters is being displayed below for perspective. The S&amp;P 500 data was downloaded from <a rel="nofollow" href="http://pages.stern.nyu.edu/~adamodar/New_Home_Page/datafile/histretSP.html" target="_blank">here</a> using an R code from <a rel="nofollow" href="http://michaeltoth.me/sentiment-analysis-of-warren-buffetts-letters-to-shareholders.html" target="_blank">here.</a></p>
<pre>
## You need to first download the raw data before running the code to recreate the graph below. 
ggplot(sp500[50:89,], aes(x=year, y=return, colour=return>0)) +
geom_segment(aes(x=year, xend=year, y=0, yend=return),
size=1.1, alpha=0.8) +
geom_point(size=1.0) +
xlab(&quot;Investment Year&quot;) +
     ylab(&quot;S&amp;P500 Annual Returns&quot;) +
     labs(title=&quot;Annual Returns on Investment in S&amp;P500&quot;, subtitle= &quot;source: http://pages.stern.nyu.edu/~adamodar/New_Home_Page/datafile/histretSP.html&quot;) + 
     theme(legend.position=&quot;none&quot;) +
     coord_flip()
</pre>
<p>Annual Returns on Investment in S&amp;P500:<br>
<a rel="nofollow" href="https://i1.wp.com/datascienceplus.com/wp-content/uploads/2017/05/sp500_Figure_final.png?ssl=1" target="_blank"><img sizes="(max-width: 490px) 100vw, 490px" src="https://i2.wp.com/datascienceplus.com/wp-content/uploads/2017/05/sp500_Figure_final-490x423.png?w=450&ssl=1" alt="" class="wp-image-6524" data-recalc-dims="1"></a></p>
<h2> Concluding Remarks </h2>
<p>R offers several packages and functions for the evaluation and analyses of differential expression and co-expression profiling of emotion words in textual data, as well as visualization and presentation of analyses results. Some of those functions, techniques and tools have been attempted in two companion posts. Hopefully, you found the examples helpful. </p>
<ul></ul>
<p><strong>
<p>Related Post</p>
<p>
<ol>
<li><a rel="nofollow" href="https://datascienceplus.com/using-mca-and-variable-clustering-in-r-for-insights-in-customer-attrition/" title="Permanent Link toUsing MCA and variable clustering in R for insights in customer attrition" target="_blank">Using MCA and variable clustering in R for insights in customer attrition</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/web-scraping-and-applied-clustering-global-happiness-and-social-progress-index/" title="Permanent Link toWeb Scraping and Applied Clustering Global Happiness and Social Progress Index" target="_blank">Web Scraping and Applied Clustering Global Happiness and Social Progress Index</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/key-phrase-extraction-from-tweets/" title="Permanent Link toKey Phrase Extraction from Tweets" target="_blank">Key Phrase Extraction from Tweets</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/financial-time-series-forecasting-an-easy-approach/" title="Permanent Link toFinancial time series forecasting – an easy approach" target="_blank">Financial time series forecasting – an easy approach</a></li>
<li><a rel="nofollow" href="https://datascienceplus.com/outlier-detection-and-treatment-with-r/" title="Permanent Link toOutlier detection and treatment with R" target="_blank">Outlier detection and treatment with R</a></li>
</ol></strong>
<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://datascienceplus.com/unsupervised-learning-and-text-mining-of-emotion-terms-using-r/"> R Programming – DataScience+</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/GJWigQQGp5w" height="1"></a></div>