<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Articles &#8211; ProgrammingR</title>
	<atom:link href="https://www.programmingr.com/feed/?cat=3%2C4" rel="self" type="application/rss+xml" />
	<link>https://www.programmingr.com</link>
	<description>Beginner to advanced resources for the R programming language</description>
	<lastBuildDate>Tue, 25 Mar 2025 03:22:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.18</generator>
	<item>
		<title>Collecting Stock Data Using R: A Quick Guide</title>
		<link>https://www.programmingr.com/content/collecting-stock-data-using-r-a-quick-guide/</link>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Tue, 25 Mar 2025 03:22:32 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=8177</guid>

					<description><![CDATA[<p>Collecting data can be a drudge for many tasks in economics or securities analysis. Fortunately, R has some good options available to streamline this task. Popular R Packages for Stock Data quantmod:The quantmod package is a favorite among financial analysts.It provides functions for quantitative financial modeling, including the retrieval of historical stock prices from sources [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/collecting-stock-data-using-r-a-quick-guide/">Collecting Stock Data Using R: A Quick Guide</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Collecting data can be a drudge for many tasks in economics or securities analysis. Fortunately, R has some good options available to streamline this task.</p>



<h2><strong>Popular R Packages for Stock Data</strong></h2>



<p><strong>quantmod:</strong><br>The quantmod package is a favorite among financial analysts.<br>It provides functions for quantitative financial modeling, including the retrieval of historical stock prices from sources such as Yahoo Finance.<br>With quantmod, you can not only automate downloading the price history for a stock but also crank out a handful of charts in your favorite format.</p>



<p> <strong>tidyquant:</strong><br>Another useful package is tidyquant, which unlocks an entire set of useful libraries within the tidyverse, which plays well with financial data.<br>These additional capabilities simplify manipulating data, running basic studies on price action and integrating other visualizations. </p>



<h2><strong>Example: Retrieving Stock Data</strong></h2>



<p>Here’s a quick example using both quantmod and tidyquant:</p>



<p><strong>Using quantmod:</strong></p>



<pre class="wp-block-preformatted"><code># Install and load quantmod if you haven't already
if (!require("quantmod")) install.packages("quantmod")
library(quantmod)

# Retrieve historical data for Microstrategy 
getSymbols("MSTR", src = "yahoo", from = "2020-01-01", to = "2025-03-01")

# Visualize the stock data using a basic chart
chartSeries(MSTR, theme = chartTheme("white"))
</code></pre>



<p><strong>Using tidyquant:</strong></p>



<pre class="wp-block-preformatted"><code># Install and load tidyquant if needed
if (!require("tidyquant")) install.packages("tidyquant")
library(tidyquant)

# Retrieve historical data for <code>Microstrategy</code>.
mstr_data &lt;- tq_get("MSTR", from = "2020-01-01", to = "2025-03-01")

# Display the first few rows of the data
head(mstr_data)
</code></pre>



<p>These examples demonstrate the ease of accessing stock data.<br></p>



<p>In practice, which package you choose generally depends on who you work with. Quantmod is popular within the trading and financial analyst communities. Analysts with a more academic background or broader programming interests have likely been pitched on the tinyverse a few times along the way. Each works, however, and can dramatically simplify your workflow.</p>



<h2><strong>Conclusion</strong></h2>



<p>We&#8217;ve shown you two ways to get the job done. The choice is up to you!</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/collecting-stock-data-using-r-a-quick-guide/">Collecting Stock Data Using R: A Quick Guide</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Remove Outliers in R</title>
		<link>https://www.programmingr.com/content/remove-outliers-in-r/</link>
					<comments>https://www.programmingr.com/content/remove-outliers-in-r/#respond</comments>
		
		<dc:creator><![CDATA[Syed]]></dc:creator>
		<pubDate>Sun, 19 Jan 2020 14:14:51 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=3435</guid>

					<description><![CDATA[<p>Statisticians often come across outliers when working with datasets and it is important to deal with them because of how significantly they can distort a statistical model. Your dataset may have values that are distinguishably different from most other values, these are referred to as outliers. Usually, an outlier is an anomaly that occurs due [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/remove-outliers-in-r/">How to Remove Outliers in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/first-date-data-r/" rel="bookmark" title="The First Date with your Data in R">The First Date with your Data in R </a></li>
<li><a href="https://www.programmingr.com/content/sparql-with-r/" rel="bookmark" title="SPARQL with R in less than 5 minutes">SPARQL with R in less than 5 minutes </a></li>
<li><a href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/" rel="bookmark" title="Validate Me! Simple Test vs. Holdout Samples in R">Validate Me! Simple Test vs. Holdout Samples in R </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>Statisticians often come across outliers when working with datasets and it is important to deal with them because of how significantly they can distort a statistical model. </p>



<p>Your dataset may have
values that are distinguishably different from most other values, these are
referred to as outliers. Usually, an outlier is an anomaly that occurs due to
measurement <a href="https://www.programmingr.com/r-error-messages/error-in-lm-fitx-y-offset-offset-singular-ok-singular-ok-0-non-na-cases/">errors but in other cases, it can occur because the experiment</a>
being observed experiences momentary but drastic turbulence. In either case, it
is important to deal with outliers because they can adversely impact the
accuracy of your results, especially in regression models.</p>



<p>In this tutorial, I’ll be
going over some methods in R that will help you identify, visualize and remove
outliers from a dataset. </p>



<h3><strong>Looking at Outliers in R</strong></h3>



<p>As I explained earlier,
outliers can be dangerous for your data science activities because most
statistical parameters such as mean, standard deviation and <a href="https://www.programmingr.com/statistics/zero-order-correlation/">correlation</a> are
highly sensitive to outliers. Consequently, any statistical calculation based
on these parameters is affected by the presence of outliers. </p>



<p>Whether it is good or bad
to remove outliers from your dataset depends on whether they affect your model
positively or negatively. Remember that outliers aren’t always the result of
badly recorded observations or poorly conducted experiments. They may also
occur due to natural fluctuations in the experiment and might even represent an
important finding of the experiment. </p>



<p>Whether you’re going to
drop or keep the outliers requires some amount of investigation. However, it is
not recommended to drop an observation simply because it appears to be an
outlier. </p>



<p>Statisticians have
devised several ways to locate the outliers in a dataset. The most common
methods include the Z-score method and the Interquartile Range (IQR) method. However,
I prefer the IQR method because it does not depend on the mean and standard
deviation of a dataset and I’ll be going over this method throughout the tutorial.
</p>



<p>The <a href="https://www.programmingr.com/statistics/find-interquartile-range/">interquartile range</a> is the central 50% or the area between the 75<sup>th</sup> and the 25<sup>th</sup> percentile of a distribution. A point is an outlier if it is above the 75<sup>th</sup> or below the 25<sup>th</sup> percentile by a factor of 1.5 times the IQR. </p>



<p>For example, if </p>



<p>&nbsp;&nbsp;&nbsp; Q1=
25<sup>th</sup> percentile</p>



<p>&nbsp;&nbsp;&nbsp; Q3= 75<sup>th</sup> percentile</p>



<p>&nbsp;&nbsp;&nbsp; Then, IQR= Q3 – Q1</p>



<p>&nbsp;&nbsp;&nbsp; And an outlier would be a point below [Q1-
(1.5)IQR] or above [Q3+(1.5)IQR]. </p>



<p>If this didn’t entirely
make sense to you, don’t fret, I’ll now walk you through the process of simplifying
this using R and if necessary, removing such points from your dataset. For
starters, we’ll use an in-built dataset of R called “warpbreaks”. It neatly
shows two distinct outliers which I’ll be working with in this tutorial. </p>



<p>You can load this dataset
on R using the <a href="https://www.programmingr.com/cat-function-in-r-how-to-stitch-data-together/">data function</a>. <br></p>



<pre class="wp-block-code"><code># <a href="https://www.programmingr.com/how-to-remove-outliers-in-r/">remove outliers</a> in r - import data
data("warpbreaks")</code></pre>



<p>Once loaded, you can
begin working on it. </p>



<h3><strong>Visualizing Outliers in R </strong></h3>



<p>One of the easiest ways
to identify outliers in R is by visualizing them in boxplots. Boxplots
typically show the <a href="https://www.programmingr.com/statistics/how-to-find-the-mean-and-median-of-grouped-data-with-examples-in-r/">median</a> of a dataset along with the first and third
quartiles. They also show the limits beyond which all <a href="https://www.programmingr.com/replace-in-r/">data values</a> are
considered as outliers. It is interesting to note that the primary purpose of a
boxplot, given the information it displays, is to help you visualize the
outliers in a dataset. </p>



<p>You can create a boxplot
to identify your outliers using: </p>



<pre class="wp-block-code"><code># remove outliers in R - initial boxplot
boxplot(warpbreaks)$out﻿</code></pre>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="300" height="278" src="https://www.programmingr.com/wp-content/uploads/2020/01/boxplot-300x278.jpg" alt="" class="wp-image-3436" srcset="https://www.programmingr.com/wp-content/uploads/2020/01/boxplot-300x278.jpg 300w, https://www.programmingr.com/wp-content/uploads/2020/01/boxplot.jpg 754w" sizes="(max-width: 300px) 100vw, 300px" /></figure></div>



<p><br><strong>[</strong>You can also label
outliers for better visualization using the “<em>ggbetweenstats</em>” function
which comes with the “<em>ggstatsplot</em>” package. If you haven’t installed it
already, you can do that using the “install.packages” function. </p>



<p>Your code should look
like this. </p>



<pre class="wp-block-code"><code># install the package 
install.packages("ggstatsplot")

# Load the package
library(ggstatsplot)

# Load the dataset 
data("warpbreaks")

# Create a boxplot of the dataset, outliers are shown as two distinct points
boxplot(warpbreaks)$out

#Create a boxplot that labels the outliers  
ggbetweenstats(warpbreaks,
wool, breaks, outlier.tagging = TRUE)</code></pre>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="300" height="300" src="https://www.programmingr.com/wp-content/uploads/2020/01/ggstatsplot-300x300.jpg" alt="" class="wp-image-3437" srcset="https://www.programmingr.com/wp-content/uploads/2020/01/ggstatsplot-300x300.jpg 300w, https://www.programmingr.com/wp-content/uploads/2020/01/ggstatsplot-150x150.jpg 150w, https://www.programmingr.com/wp-content/uploads/2020/01/ggstatsplot-768x765.jpg 768w, https://www.programmingr.com/wp-content/uploads/2020/01/ggstatsplot.jpg 814w" sizes="(max-width: 300px) 100vw, 300px" /></figure></div>



<h3><strong>Finding Outliers – Statistical Methods </strong></h3>



<p>Now that you have some
clarity on what outliers are and how they are determined using visualization
tools in R, I can proceed to some statistical methods of finding outliers in a
dataset. </p>



<p>This important because
visualization isn’t always the most effective way of analyzing outliers. You can’t
always look at a plot and say, “<em>oh! this is an outlier because it’s far away
from the rest of the points</em>”. Your data set may have thousands or even more
observations and it is important to have a numerical cut-off that
differentiates an outlier from a non-outlier. This allows you to work with any
dataset regardless of how big it may be. </p>



<p>Building on my previous
discussion of the IQR method to find outliers, I’ll now show you how to
implement it using R. </p>



<p>I’ll be using the
quantile() function to find the 25th and the 75th percentile of the dataset,
and the IQR() function which elegantly gives me the difference of the 75<sup>th</sup>
and 25<sup>th</sup> percentiles. </p>



<pre class="wp-block-code"><code># how to find outliers in r
Q &lt;- quantile(warpbreaks$breaks, probs=c(.25, .75), na.rm = FALSE)</code></pre>



<p>It may be noted here that
the quantile() function only takes in numerical vectors as inputs whereas
warpbreaks is a data frame. I, therefore, specified a relevant column by adding
$breaks, this passes only the “breaks” column of “warpbreaks” as a numerical
vector. </p>



<p>The IQR function also requires
numerical vectors and therefore arguments are passed in the same way. </p>



<pre class="wp-block-code"><code># how to find outliers in r - calculate Interquartile Range
iqr &lt;- IQR(warpbreaks$breaks)</code></pre>



<p>Now that you know the IQR
and the quantiles, you can find the cut-off ranges beyond which all data points
are outliers. </p>



<pre class="wp-block-code"><code># how to find outliers in r - upper and lower range
up &lt;-  Q[2]+1.5*iqr # Upper Range  
low&lt;- Q[1]-1.5*iqr # Lower Range﻿</code></pre>



<h3><strong>Eliminating Outliers </strong></h3>



<p>Using the subset()
function, you can simply extract the part of your dataset between the upper and
lower ranges leaving out the outliers. The code for removing outliers is: </p>



<pre class="wp-block-code"><code># how to remove outliers in r (the removal)
eliminated&lt;- subset(warpbreaks, warpbreaks$breaks > (Q[1] - 1.5*iqr) &amp; warpbreaks$breaks &lt; (Q[2]+1.5*iqr))</code></pre>



<p>The boxplot without outliers can now be visualized:</p>



<pre class="wp-block-code"><code># how to remove outliers in r - resulting boxplots
ggbetweenstats(eliminated, wool, breaks, outlier.tagging = TRUE) </code></pre>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="300" height="296" src="https://www.programmingr.com/wp-content/uploads/2020/01/eliminate-300x296.jpg" alt="" class="wp-image-3438" srcset="https://www.programmingr.com/wp-content/uploads/2020/01/eliminate-300x296.jpg 300w, https://www.programmingr.com/wp-content/uploads/2020/01/eliminate-768x759.jpg 768w, https://www.programmingr.com/wp-content/uploads/2020/01/eliminate.jpg 818w" sizes="(max-width: 300px) 100vw, 300px" /></figure></div>



<p><strong>[</strong>As said earlier, outliers
may or may not have to be removed, therefore, be sure that it is necessary to
do so before eliminating outliers.</p>



<h3><strong>Other Ways of Removing Outliers </strong></h3>



<p>Now that you know what
outliers are and how you can remove them, you may be wondering if it’s always
this complicated to remove outliers. Fortunately, R gives you faster ways to
get rid of them as well. </p>



<p>The one method that I
prefer uses the boxplot() function to identify the outliers and the which()
function to find and remove them from the dataset. </p>



<p>First, we identify the
outliers: </p>



<pre class="wp-block-code"><code># identify outliers in r boxplot
boxplot(warpbreaks$breaks, plot=FALSE)$out</code></pre>



<p>Then save the outliers in
a vector:</p>



<pre class="wp-block-code"><code># how to remove outliers in r (alternative method)
outliers &lt;- boxplot(warpbreaks$breaks, plot=FALSE)$out</code></pre>



<p>This vector is to be
excluded from our dataset. The which() function tells us the rows in which the
outliers exist, these rows are to be removed from our data set. However, before
removing them, I store “warpbreaks” in a variable, suppose x, to ensure that I
don’t destroy the dataset. </p>



<pre class="wp-block-code"><code># how to remove outliers in r (alternative method)
x&lt;-warpbreaks ﻿
x&lt;- x[-which(x$breaks %in% outliers),]</code></pre>



<p>I have now removed the outliers from my dataset using two simple commands and this is one of the most elegant ways to go about it. R gives you numerous other methods to get rid of outliers as well, which, when dealing with datasets are extremely common. However, being quick to remove outliers without proper investigation isn’t good statistical practice, they are essentially part of the dataset and might just carry important information. Losing them could result in an inconsistent model. </p>



<h3><strong>The Author:</strong></h3>



<p>Syed Abdul Hadi is an aspiring undergrad with a keen interest in data analytics using mathematical models and data processing software. His expertise lies in predictive analysis and interactive visualization techniques. Reading, travelling and horse back riding are among his downtime activities. Visit him on <a href="http://www.linkedin.com/in/syedhadi816">LinkedIn</a> for updates on his work. </p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/remove-outliers-in-r/">How to Remove Outliers in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/first-date-data-r/" rel="bookmark" title="The First Date with your Data in R">The First Date with your Data in R </a></li>
<li><a href="https://www.programmingr.com/content/sparql-with-r/" rel="bookmark" title="SPARQL with R in less than 5 minutes">SPARQL with R in less than 5 minutes </a></li>
<li><a href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/" rel="bookmark" title="Validate Me! Simple Test vs. Holdout Samples in R">Validate Me! Simple Test vs. Holdout Samples in R </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/remove-outliers-in-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Validate Me! Simple Test vs. Holdout Samples in R</title>
		<link>https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/</link>
					<comments>https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 12:54:14 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=3414</guid>

					<description><![CDATA[<p>In statistics, it is often necessary to not only model data but test that model as well. To do this, you need to randomly separate the data into two groups ensuring even samples regardless of the order of the original sample. Statistical model When a data scientist is working with a data set, he will [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/">Validate Me! Simple Test vs. Holdout Samples in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/simple-anagram-finder-using-r/" rel="bookmark" title="Simple Anagram Finder Using R">Simple Anagram Finder Using R </a></li>
<li><a href="https://www.programmingr.com/content/rstudio-development-environment/" rel="bookmark" title="RStudio Development Environment">RStudio Development Environment </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>In statistics, it is often necessary to not only model data but test that model as well. To do this, you need to randomly separate the data into two groups ensuring even samples regardless of the order of the original sample.<br></p>



<h2>Statistical model</h2>



<p>When a data scientist is working with a data set, he will create a statistical model. Creating a model involves finding a mathematical formula that fits the data. Once you have a model, you need to validate it. This involves comparing it to a validation sample. To get this sample, the original sample is randomly separated into two samples. One sample is a training data set used to develop the model and the other is used to validate your model.<br></p>



<h2>Model validation</h2>



<p>The process of validating a mathematical model uses a different data set than that used to develop it. Model validation is performed by comparing the model with a second data set to see if it also fits the model. If it does not fit, another model is needed. A frequent way of obtaining a validation sample is to split the original sample into two parts with one part being held for validation purposes.<br></p>



<h2>Holdout sample</h2>



<p>Part of the process of evaluating a mathematical model involves separating the original data set into training data, and a holdout sample. The training data is used to develop a mathematical model by fitting a mathematical formula to it. This mathematical formula is then applied to the holdout sample, to validate the formula. To ensure that such a comparison is valid, you must make sure that both data sets are statistically meaningful. If you only have one original <a href="https://www.programmingr.com/examples/neat-tricks/sample-r-function/randomly-split-data-in-r/">data set, it is important to separate the data randomly</a> to keep both sets statistically meaningful.<br></p>



<h2>How to split data into training and testing in R</h2>



<p>Answering the question of how to <a href="https://www.programmingr.com/statistics/r-ecommerce-split-testing-tidyverse/">split data into training and testing</a> in R requires using the sample function. The sample function has the format of sample (dataset, size, probability, <a href="https://www.programmingr.com/replace-in-r/">replace), and it returns a vector of randomly selected values from the dataset</a>. The dataset variable is the group of values the sample function selects from. Size is the number of values the sample function returns to the output vector. Probability is the optional parameter setting the probability of getting the value in certain positions. Replace is an optional logical parameter for deciding whether to allow duplication in the selection.</p>



<pre class="wp-block-code"><code>> x=c(4,11,25,35,45,55,68,73,86,99)
 > set.seed(5)
 > a=sample(1:10,5,FALSE)
 > a
 [1] 2 9 7 3 1
 > x[a]
 [1] 11 86 68 25  4
 > x[-a]
 [1] 35 45 55 73 99</code></pre>



<p>When this formula is applied to a data set such as a victor by using the results of sample function as the index [a] and anti-index [-a] of that dataset. The set.seed function serves the purpose of ensuring that others can replicate your results.<br></p>



<h2>Application</h2>



<p>Here is an example of the practical application of pedal data for the iris flower. </p>



<pre class="wp-block-code"><code> > data(iris)
 > smp_size = floor(0.5 * nrow(iris))
 > smp_size
 [1] 75
 > set.seed(37)
 > <a href="https://www.programmingr.com/r-error-messages/fixing-r-error-message-train-and-class-have-different-lengths/">train</a>_ind = sample(seq_len(nrow(iris)), size = smp_size)
 > train = iris[train_ind, ]
 > test = iris[-train_ind, ]
 > train
 > test</code></pre>



<p>It demonstrates the steps needed to separate a dataset into training and testing samples. These two samples can then be used to create and test a mathematical model.</p>



<p>The need to divide a data set to provide a testing sample is critical to validating mathematical models of data being evaluated. While there is no one function that does the entire job, the process is still quite simple in R. </p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/">Validate Me! Simple Test vs. Holdout Samples in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/simple-anagram-finder-using-r/" rel="bookmark" title="Simple Anagram Finder Using R">Simple Anagram Finder Using R </a></li>
<li><a href="https://www.programmingr.com/content/rstudio-development-environment/" rel="bookmark" title="RStudio Development Environment">RStudio Development Environment </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zen and The Art of Competing Against MBA&#8217;s</title>
		<link>https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/</link>
					<comments>https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Thu, 24 Jan 2019 12:39:02 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=2252</guid>

					<description><![CDATA[<p>&#8220;I appreciate your ambition, but we&#8217;re looking for an MBA&#8230;&#8221; My senior manager smiled and indicated the topic was closed. Despite the fact I was effectively running our direct mail program in the absence of my recently departed boss, the door was closed and locked. I&#160;quit two months later. Within three years, I was promoted [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/">Zen and The Art of Competing Against MBA&#8217;s</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/analyst-resume/" rel="bookmark" title="How To Make Your Data Analyst Resume Stand Out">How To Make Your Data Analyst Resume Stand Out </a></li>
<li><a href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/" rel="bookmark" title="Resume &#038; Interview Tips For R Programmers">Resume &#038; Interview Tips For R Programmers </a></li>
<li><a href="https://www.programmingr.com/content/helpful-statistical-references/" rel="bookmark" title="Helpful statistical references">Helpful statistical references </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>&#8220;I appreciate your ambition, but we&#8217;re looking for an MBA&#8230;&#8221;</p>



<p>My senior manager smiled and indicated the topic was closed. Despite the fact I was effectively running our direct mail program in the absence of my recently departed boss, the door was closed and locked. I&nbsp;quit two months later.</p>



<p>Within three years, I was promoted to her job at another company. Without an MBA.</p>



<p>None of this was luck. I took the other job because there was an obvious way to make this happen.</p>



<p>The method I&#8217;m about to lay out is intended for analysts and engineers. It&#8217;s not the only way to pull an end run around the MBA requirement, but it&#8217;s a great match with our unique abilities and passions.</p>



<span id="more-2252"></span>



<h4>Don&#8217;t Play Their Game</h4>



<p>How do you beat Bobby Fischer, the chess grand master?</p>



<p>Play him in anything but chess.</p>



<p>The admission process for an elite MBA program is biased towards candidates with strong social skills who are coming from <a href="https://www.programmingr.com/examples/financial-engineering-resources-r/top-5-r-finance-modules-reviewed/">Finance</a> and Business backgrounds. They are then groomed through a two year process which polishes their social skills, broadens their perspective, and expands their social network.</p>



<p>MBA&#8217;s are the kings and queens of being &#8220;broadly&#8221; developed and well <a href="https://www.programmingr.com/round-down-in-r/">rounded</a>.</p>



<p>So be what they aren&#8217;t: <strong>deep</strong>.</p>



<p>This isn&#8217;t sneering. It is humanly impossible to be truly broad and deep; there&#8217;s just not enough time. You either know a little about many things or a lot about a specialty. Pick one and own it.</p>



<h4>Hunt for High Value (Technical) Muck</h4>



<p>No matter how many PowerPoints are unleashed in the boardroom, the performance of a businesses ultimately dictated by processes and technology. Either the machine works or it doesn&#8217;t.</p>



<p>Be alert for messy tasks with a high impact on business performance. Especially ones which require technical skills or advanced training.</p>



<p>These play to your strengths.</p>



<h4>Control the Spice, Control The Universe</h4>



<p>Everyone wants to do marketing strategy. Marketing Analytics? Meh. <a href="https://www.programmingr.com/examples/r-and-odbc-pulling-data-from-a-sql-database/">Data pulls</a> and list processing? Surely you can outsource that, right? That&#8217;s totally beneath the dignity of an MBA.</p>



<p>The funny thing about managing list processing:</p>



<ul><li>By directly working with the data, you see things that don&#8217;t get shown in a report </li><li>By directly controlling this process, you can make changes to the data you want</li></ul>



<p>Jumping back to the marketing example I shared, within three months of taking over mailing list processing, our team had access to data that nobody else was looking at. Better yet, we started reading test results in weeks instead of months. But the real value was getting visibility into the details of failed tests: we could salvage insights to improve our future bets.</p>



<p>Speaking as an engineer, working on this project was like being a kid in a candy store. Lots of interesting puzzles to figure out, plenty of things to optimize, and some creative coding challenges. Plus you get to show off some neat things at the end. This was totally inside my comfort zone.</p>



<p>That being said, this makes for good &#8220;tech guy of the year&#8221; material but we&#8217;re still not getting promoted. That takes the next step.</p>



<h4>Translate The Win Back Into Business Terms</h4>



<p>Go up two levels in the org chart and they probably don&#8217;t know what list processing is. They may barely understand analytics. They&#8217;re certainly not very interested in R programming.</p>



<p>They do understand getting things done.</p>



<p>So craft a story which translates the technical accomplishment into business terms and impact.</p>



<p>For the direct marketing example, the story looks like this:</p>



<ul><li>We were able to figure out who responds to our sales and marketing programs</li><li>Since we&#8217;re selecting the right prospects and offers, our sales are up over 80%</li><li>Even better, we&#8217;re able to <a href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/">test</a> in weeks rather than months, so we learn faster</li><li>Our client (a large retailer) is happy and wants to double the marketing budget</li></ul>



<p>Boom. Technical result translated into MBA terms. Backed by the full power of knowing what was going on inside the box and using engineering expertise to make it run better.</p>



<p>When the job came open, my &#8220;unqualified&#8221; application was moved to the head of the line.</p>



<h4>Cashing In: Getting Paid What You&#8217;re Worth</h4>



<p>While I&#8217;m a fan of employer loyalty, there&#8217;s a key drawback in this method. Step Four addresses this.</p>



<p>Employers price talent based on the kind of problems they&#8217;re being hired to solve. Most of us start our career as interchangeable &#8220;commodity talent&#8221;. Corporate HR departments are good at figuring this out.</p>



<p>The problem with being a commodity is you&#8217;re at the mercy of the market when it comes to pricing. If you&#8217;re pricing my services as an R developer, there&#8217;s a lot of other people quoted rates for similar work. At least in the eyes of an unsophisticated corporate buyer. So salaries are going to cap out at around $X.</p>



<p>Chances are $X is a decent wage. Good analytics developers are in short supply. But you&#8217;re going to struggle with the dysfunctional logic of companies wanting to pay top talent the &#8220;market average&#8221; rate.</p>



<p>Look back at the second step. You just pulled off a significant accomplishment. The value of that win is substantially higher than $X. Companies aren&#8217;t completely silly &#8211; they won&#8217;t pay the full amount. But they&#8217;re willing to pay a lot more if your job description is &#8220;can deliver specific win&#8221; than &#8220;writes code&#8221;.</p>



<p>My first job description at General Electric was &#8220;writes code&#8221;. My job description when I went to my next company was basically &#8220;implements change programs&#8221;. That salary bracket pays about double the first. Once you get above a certain level, you&#8217;re generally hired to solve a specific problem. Most of my recent engagements involve pricing and product development: solve this margin issue, grow this product line. The value of the these improvements can be estimated and plays a role in the compensation discussion.</p>



<p>The problem with staying at one company is their HR organization rarely resets their view of your value. They may raise it a percentage but always compare that percentage against the rest of their employees to ensure &#8220;progress is fair&#8221;. But your market value doesn&#8217;t grow 4% per year. You&#8217;re hopping between the brackets, delivering a very different level of value &#8211; that will be priced at a higher level in the market.</p>



<p>The right time to move is when you can legitimately claim a significantly higher compensation bracket and your existing employer is unwilling to close the gap. It&#8217;s worth a discussion however. Be ready to explain how the value you offer has changed by an order of magnitude to justify the increase. A smart employer can offer a big adjustment to &#8220;close the gap&#8221;.</p>



<h4>Distilling the Method</h4>



<p>So there&#8217;s a four step process here:</p>



<ul><li>Look for messy technical problems related to the area you want to play in</li><li>Solve technical problems using analytics and engineering expertise</li><li>Repackage and explain the accomplishment in terms of business impact</li><li>Once you&#8217;re established as an expert in the space, reprice your services</li></ul>



<p>Sometimes the value is more than simply money. Improvements in speed, control, and visibility can often be just as valuable to a senior executive trying to drive change. The IT organizations at many big companies are incredibly slow and non-responsive; giving executives a way to get things done without traversing this swamp can earn you admission to some interesting opportunities.</p>



<p>Don&#8217;t ignore the value of being able to give knowledgeable advice either. Knowing how to translate the business direction into technical changes is a valued skill in product management. The reverse, being able to translate technical innovation into business change is a vital part of competitive intelligence. Your depth of expertise can set you apart for these roles.</p>



<p>Either way, this gives you options to skip the MBA, focus on what you love, and get the job anyway&#8230;</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/">Zen and The Art of Competing Against MBA&#8217;s</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/analyst-resume/" rel="bookmark" title="How To Make Your Data Analyst Resume Stand Out">How To Make Your Data Analyst Resume Stand Out </a></li>
<li><a href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/" rel="bookmark" title="Resume &#038; Interview Tips For R Programmers">Resume &#038; Interview Tips For R Programmers </a></li>
<li><a href="https://www.programmingr.com/content/helpful-statistical-references/" rel="bookmark" title="Helpful statistical references">Helpful statistical references </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>The First Date with your Data in R</title>
		<link>https://www.programmingr.com/content/first-date-data-r/</link>
					<comments>https://www.programmingr.com/content/first-date-data-r/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 04 Jun 2018 01:01:17 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1689</guid>

					<description><![CDATA[<p>So you have your data, now what? With a little R code, you can quickly get to know a lot about your dataset. By taking care of basic data hygiene, gathering summary statistics, and taking a quick look at your data through graphs first, your later analysis is strengthened and simplified. The graphs you produce [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/first-date-data-r/">The First Date with your Data in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/r-helper-functions/" rel="bookmark" title="R Helper Functions">R Helper Functions </a></li>
<li><a href="https://www.programmingr.com/content/remove-outliers-in-r/" rel="bookmark" title="How to Remove Outliers in R">How to Remove Outliers in R </a></li>
<li><a href="https://www.programmingr.com/content/sparql-with-r/" rel="bookmark" title="SPARQL with R in less than 5 minutes">SPARQL with R in less than 5 minutes </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>So you have your data, now what? With a little R code, you can quickly get to know a lot about your dataset. By taking care of basic data hygiene, gathering summary statistics, and taking a quick look at your data through graphs first, your later analysis is strengthened and simplified. The graphs you produce in this tutorial will not only be useful for your understanding, but also for communicating your results in a report or article.</p>



<p>In this tutorial, we&#8217;ll cover how to to all of that in R, using the program <a href="https://www.rstudio.com/">RStudio</a>. To keep this from getting to complicated, we&#8217;ll also stick to only using functions that exist in the base R program.</p>



<span id="more-1689"></span>



<p>We&#8217;ve used a file already in the R library for this tutorial: co2. It&#8217;s a popular and well-supported dataset showing the concentrations of carbon dioxide in the atmosphere over the several decades. If you&#8217;re already comfortable using R, you can use your own data by modifying the sample code. In the next section, we&#8217;ll show you how to add the co2 file to your code, so you can take it out on your first date.</p>



<h3>Making Introductions</h3>



<p>One of the reasons that R is so attractive to scientists and <a href="https://www.programmingr.com/content/analyst-resume/">data analysts</a> is the breadth of its scope. With the right extensions, its full functionality can be used on most any file type or database format. For the purposes of this tutorial, to keep it clear and simple, we&#8217;ll walk through getting to know a file already in the R library.</p>



<h3>Uploading Data</h3>



<p>To add the &#8216;co2&#8217; dataset to your environment in RStudio, run &#8216;data(co2)&#8217;. Data() tells R where to find the dataset, and &#8216;co2&#8217; calls the dataset.</p>



<h3>Checking for Accuracy</h3>



<p>It&#8217;s important to check that R uploaded your entire dataset with the correct headers and labels. Common practice is to print a snippet of the dataset in R and cross-reference that with what your dataset in the program you created or found it in. The head and tail functions allows you to do this by printing a sample of the entries. Use &#8216;head(co2)&#8217; to take a look at your first few entries.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.programmingr.com/wp-content/uploads/2018/06/slot1.png"><img loading="lazy" width="300" height="35" src="https://www.programmingr.com/wp-content/uploads/2018/06/slot1-300x35.png" alt="" class="wp-image-1790" srcset="https://www.programmingr.com/wp-content/uploads/2018/06/slot1-300x35.png 300w, https://www.programmingr.com/wp-content/uploads/2018/06/slot1.png 604w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p>Use &#8216;tail(co2)&#8217; to have R print the last. If these look right, you can be fairly sure that your dataset loaded correctly</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.programmingr.com/wp-content/uploads/2018/06/slot2.png"><img loading="lazy" width="300" height="25" src="https://www.programmingr.com/wp-content/uploads/2018/06/slot2-300x25.png" alt="" class="wp-image-1792" srcset="https://www.programmingr.com/wp-content/uploads/2018/06/slot2-300x25.png 300w, https://www.programmingr.com/wp-content/uploads/2018/06/slot2.png 580w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<h3>Getting to Know Your Data</h3>



<p>Now that your dataset is loaded into R, you&#8217;re ready to get to know it. R has several quick functions you can run to <a href="https://www.programmingr.com/ggpubr/">visualize and understand your data</a> enough to select the proper statistical tools later in your analysis.</p>



<h4>Seeing your First Patterns</h4>



<p>R offers a quick and simple tool, the <a href="https://www.programmingr.com/statistics/how-to-calculate-a-five-number-summary-in-r-fivenum-function-in-r/">summary function</a>, for numerically checking the patterns in your data. Taking a look at your quantiles, median, and <a href="https://www.programmingr.com/statistics/how-to-calculate-mode-in-r/">mode</a> is as easy as running the code &#8216;summary(co2)&#8217;. What you&#8217;ll see next are the summary statistics for co2 concentrations in an easy-to-read table.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.programmingr.com/wp-content/uploads/2018/06/slot3.png"><img loading="lazy" width="300" height="32" src="https://www.programmingr.com/wp-content/uploads/2018/06/slot3-300x32.png" alt="" class="wp-image-1793" srcset="https://www.programmingr.com/wp-content/uploads/2018/06/slot3-300x32.png 300w, https://www.programmingr.com/wp-content/uploads/2018/06/slot3.png 644w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<h3>Visualizing your data</h3>



<p>While that table is useful, it doesn&#8217;t tell you what your data actually <i>looks</i> like. Next, we&#8217;ll produce a quick plot in order to visually get a sense of how the data is distributed and if there are any quirks, like outliers.</p>



<p>Plot is a handy function built into base R just for this purpose. Since co2 concentrations are continuous, you can use the code &#8216;plot(co2)&#8217; as is, without manipulation, to take your first look at the data.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.programmingr.com/wp-content/uploads/2018/06/slot4.png"><img loading="lazy" width="300" height="140" src="https://www.programmingr.com/wp-content/uploads/2018/06/slot4-300x140.png" alt="" class="wp-image-1794" srcset="https://www.programmingr.com/wp-content/uploads/2018/06/slot4-300x140.png 300w, https://www.programmingr.com/wp-content/uploads/2018/06/slot4-768x358.png 768w, https://www.programmingr.com/wp-content/uploads/2018/06/slot4.png 1912w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p>You can see that the data generally trends upwards and oscillates over the course of each year. There are no obvious outliers to worry about, and it seems that the relationship is linear. These observations allow you to start making general conclusions about your data and see where to go next.</p>



<p>This plot was helpful for you to understand your data, but to use it for anything else requires a few updates. You can alter parameters within the plot function to produce a professional quality graphic. Run the code &#8216;plot(co2, xlab = &#8216;year&#8217;, ylab = &#8216;CO2 (ppm)&#8217;, main = &#8216;Atmospheric CO2 Concentrations from 1959 &#8211; 1998&#8217;, col = &#8216;red&#8217;)&#8217; to put the finishing touches on your graph.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.programmingr.com/wp-content/uploads/2018/06/slot5.png"><img loading="lazy" width="300" height="142" src="https://www.programmingr.com/wp-content/uploads/2018/06/slot5-300x142.png" alt="" class="wp-image-1795" srcset="https://www.programmingr.com/wp-content/uploads/2018/06/slot5-300x142.png 300w, https://www.programmingr.com/wp-content/uploads/2018/06/slot5-768x364.png 768w, https://www.programmingr.com/wp-content/uploads/2018/06/slot5.png 1878w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<h3>Planning your Next Date</h3>



<p>Things have gone smoothly so far. You now know enough about your data to choose further testing and even have some figures that show relevant trends in your data. With your data already loaded into R, you can explore the rest of the functionality that R has to offer.</p>



<p>If you&#8217;re new to R, you&#8217;re likely surprised at how efficient it is. Unlike in other statistical software, many of the functions you use constantly are already loaded in. Calling functions and printing their results can be done in one step. Plus, by using RStudio, all of your figures are quickly accessible and stored for future use.</p>



<p>Also- if you&#8217;re in a hurry and need a simple tool, check out our new <a href="https://statscalculator.com/">statistics calculator</a>&nbsp;(free, web based).</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/first-date-data-r/">The First Date with your Data in R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/r-helper-functions/" rel="bookmark" title="R Helper Functions">R Helper Functions </a></li>
<li><a href="https://www.programmingr.com/content/remove-outliers-in-r/" rel="bookmark" title="How to Remove Outliers in R">How to Remove Outliers in R </a></li>
<li><a href="https://www.programmingr.com/content/sparql-with-r/" rel="bookmark" title="SPARQL with R in less than 5 minutes">SPARQL with R in less than 5 minutes </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/first-date-data-r/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How To Make Your Data Analyst Resume Stand Out</title>
		<link>https://www.programmingr.com/content/analyst-resume/</link>
					<comments>https://www.programmingr.com/content/analyst-resume/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Sun, 05 Feb 2017 23:35:11 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1646</guid>

					<description><![CDATA[<p>To the typical reader, most technical resumes sound alike and share none of the unique personality behind the paper. For example, you may know that Jane is meticulous about data quality and has an amazing knack for creatively turning business requests into statistical problems. George is easily the most &#8220;flexible&#8221; person on your team when [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/analyst-resume/">How To Make Your Data Analyst Resume Stand Out</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/" rel="bookmark" title="Resume &#038; Interview Tips For R Programmers">Resume &#038; Interview Tips For R Programmers </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
<li><a href="https://www.programmingr.com/content/helpful-statistical-references/" rel="bookmark" title="Helpful statistical references">Helpful statistical references </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>To the typical reader, most technical resumes sound alike and share none of the unique personality behind the paper.</p>



<p>For example, you may know that Jane is meticulous about data quality and has an amazing knack for creatively turning business requests into statistical problems. George is easily the most &#8220;flexible&#8221; person on your team when it comes to getting up to speed on new packages. But when it comes time to write a resume, they both rattle off the same list of duties and technical keywords.</p>



<p>And since there&#8217;s no unique &#8220;signal&#8221; left in the resume, the recruiting process devolves into relying on other <a href="https://www.programmingr.com/examples/factorial-in-r/">factors</a>.</p>



<p>I&#8217;m going to share a couple of simple tips that can help your data analyst resume stand out.</p>



<span id="more-1646"></span>



<h3><strong>Facts Tell, But Stories Sell</strong></h3>



<p>Consider, for a moment, that we are going to hire a sports star. Perhaps a football player.</p>



<p>Two candidates dossiers sit on your desk:</p>



<p><strong>Candidate A&#8217;s</strong>&nbsp;dossier contains a long list of training programs, games played, and player statistics.</p>



<p><strong>Candidate B&#8217;s</strong> dossier has a series of photographs and charts that show the best plays of their career.</p>



<p>Which one would you pick?</p>



<p>Most hiring managers would pick Candidate B, since they can visualize how they do on the job.</p>



<p>While I don&#8217;t suggest attaching a photograph of you coding, there are other ways to help a hiring manager see you in action. Think about a few of your best moments. What problem were you asked to solve? How did you approach it? What was the result, in terms of what you handed the customer and how it made their life better?</p>



<p>There&#8217;s a formula here:</p>



<ul><li>Identify the specific area you were investigating</li><li>Describe what you delivered as an insight / solution</li><li>Identify who you shared the results with</li><li>Describe how it made their life better &#8211; with numbers, if possible</li></ul>



<p>For example, consider the following statement:</p>



<p>&#8220;Led analysis of user engagement, using&nbsp;click tracking to understand visitor preferences and identify effective areas to promote content. Shared insights with publisher and adjusted website layout, reducing bounce rate 30% and increasing average time on site by 50%.&#8221;</p>



<p>If I&#8217;m hiring for a digital marketing data science role, this story about an accomplishment just captured my full attention and you are getting an interview. This is as good as a video clip of that football player intercepting a pass and running it in for a score.</p>



<h3>Specialists Beat Generalists</h3>



<p>Stated otherwise: are you selling parts or are you selling a car?</p>



<p>Analytics gives us a great collection of parts &#8211; every assignment gives us a ton of transferable skills and the typical analyst rotates around a couple of different business functions or industries in the first decade of their career. Advanced degrees give us &#8211; more parts!</p>



<p>The good news is these skills are rare, so starting salaries are high. The bad news &#8211; everyone else is collecting the same parts. After a decade in the workforce, we start to look alike to the business.</p>



<p>The cure?&nbsp;Stop talking about parts and show them the entire car.</p>



<p>Let&#8217;s step back for a moment and look at your job in a broader context. You handle part of a larger process, such as statistical modeling or data extraction. Above you is your boss, who is tasked with assembling the contributions of several different employees into a solution that is provided to the business. Ultimately, the solution should help the rest of the business, for which they fund your team&#8217;s existence.</p>



<p>Interesting things happens when you learn all of the pieces to deliver a particular solution. First, you can operate with limited supervision. You can also bring that process to a new company, since you know all of the parts. &nbsp;Also, you are more likely to find improvements. All of these things increase your value. Better yet, if you show that you have delivered similar solutions elsewhere, the risk of hiring you drops.</p>



<p>Executing this comes down to playing up the relevant parts of your experience and weaving them into a consistent theme across your last several roles. First, make your specialty the headline of your resume (Senior Pricing Expert!). Next, paint the picture in your introduction (Twelve years of pricing and related experience, building analytical models and pricing software). Focus on accomplishments related to your specialty. The longer (in terms of years or jobs) you can show involvement in the specialty, the better.</p>



<p>Don&#8217;t sell them the parts, sell them the car. For Full Price.</p>



<h3><strong>Less is More</strong></h3>



<p>Now that we&#8217;ve talked about how to focus your resume on a specialty, lets discuss what to do about the rest.</p>



<p><strong>Get Rid Of It.</strong></p>



<p>I&#8217;m completely serious. The content of a resume going to an actual human should do exactly three things:</p>



<ul><li>Explain the value you offer &#8211; particularly if you&#8217;re a specialist &#8211; &nbsp;with proof you can deliver</li><li>Give dates to convince HR you&#8217;re not a wanted criminal and were employed / studying</li><li>Present a very small number of potential &#8220;ice-breakers&#8221;</li></ul>



<p>That&#8217;s it. Anything outside that reduces your chances of success.</p>



<ul><li>Massive list of every duty? Cut it, doesn&#8217;t help</li><li>Every certification? Nope, doesn&#8217;t help</li><li>Every technology ever used? Gone</li><li>Eight page resume? Prioritize content.</li></ul>



<p>Edit ruthlessly. What do you want the audience to focus on? Put that the top of the page. Add a couple of interesting personal details at the bottom of your resume, to give people a way to break the ice. Everything else is a risk. You have X minutes in an interview to build a rapport with your interviewer and persuade them you are a fit for the role. Providing details on unrelated topics is a great way to get dragged into an interesting conversation that chews up time without moving you forward. For example, I spent two years hunting credit card fraud. Interesting? Absolutely. Helps close pricing jobs? Not really&#8230;.</p>



<p>The other benefit of this approach is it keeps you out of traps. Listing every certification or technical exposure you&#8217;ve ever been exposed to is a massive risk, especially if you haven&#8217;t recently used many of them. Listing experience unrelated to your goal risks derailing the interview. By staying tight and focused, you guide the conversation to the topics you want.</p>



<p>I&#8217;m a fan of the one page resume, even for senior people. Mine boils down twenty years of analytics, over half at the director level, into a single page that drives home my area of expertise (marketing and pricing analytics). It gets a decent call back rate, for competitive roles.</p>



<h3>The Revised Resume</h3>



<p>These changes add up to a tighter, more focused resume. They give you a chance to showcase your unique experience, helping you stand out from the rest of the crowd and potentially qualifying for higher paid roles. Finally, you avoid many common ways to derail an interview by allowing the conversation to focus on the wrong topics.</p>



<p>Most analytics resumes are poorly written. This is an easy way to stand out from the pack.</p>



<p>This article is a follow up to our earlier post on <a href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/">resumes and interview tips for r programmers</a>.</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/analyst-resume/">How To Make Your Data Analyst Resume Stand Out</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/" rel="bookmark" title="Resume &#038; Interview Tips For R Programmers">Resume &#038; Interview Tips For R Programmers </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
<li><a href="https://www.programmingr.com/content/helpful-statistical-references/" rel="bookmark" title="Helpful statistical references">Helpful statistical references </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/analyst-resume/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Simple Anagram Finder Using R</title>
		<link>https://www.programmingr.com/content/simple-anagram-finder-using-r/</link>
					<comments>https://www.programmingr.com/content/simple-anagram-finder-using-r/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 28 Nov 2016 05:19:20 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1630</guid>

					<description><![CDATA[<p>One of my early programming projects in Python was a word game solver (example: word jumble solver or wordle solver) &#8211; the early version was a simple script, which grew into a web application. Since then, I&#8217;ve always enjoyed using dictionary search problems to test out a new language. Today&#8217;s article will look at building a searchable [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/simple-anagram-finder-using-r/">Simple Anagram Finder Using R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>One of my early programming projects in Python was a word game solver (example: <a href="http://www.hanginghyena.com/solvers/word-jumble-solver">word jumble solver</a> or <a href="https://www.hanginghyena.com/solvers/wordlesolver">wordle solver</a>) &#8211; the early version was a simple script, which grew into a web application. Since then, I&#8217;ve always enjoyed using dictionary search problems to test out a new language.</p>



<p>Today&#8217;s article will look at building a searchable anagram dictionary using R. We will take an English word list and create a simple hash-map by sorting the letters into alphabetical order. We will store this into a hash-map data structure (um, Houston, we may have a wee problem here&#8230;.does R even have such a beast?) and write a simple function to check if your letters can be unscrambled into a word.</p>



<span id="more-1630"></span>



<p>Let&#8217;s start with the dictionary. We&#8217;re going to use the Enable open source dictionary. A copy can be downloaded from <a href="http://www.hanginghyena.com/blog/presentations/">here</a>. Please download to your local machine and access it from there.</p>



<p>wordlist &lt;- readLines(&#8220;c:\\enable1.txt&#8221;)</p>



<p>Now, to <a href="https://www.programmingr.com/sort-alphabetically-in-r/">sort the letters in a string into alphabetical</a> order. Basically, we&#8217;re splitting the word up into letters. Then using the unlist <a href="https://www.programmingr.com/length-function-in-r-for-vectors-lists-and-strings/">function to convert this into a vector</a>. Then sorting the vector into alphabetical order. Then pasting the whole mess together. I give you&#8230; the hashword.</p>



<p>hashword = paste(sort(unlist(strsplit(word, &#8220;&#8221;))), collapse = &#8220;&#8221;)</p>



<p>This is helpful for two reasons:</p>



<ul><li>Identifies <a href="http://www.hanginghyena.com/blog/large-anagram-families-potential-scrabble-words/">anagram families</a> &#8211; words with the same letters</li><li>Can be used to unscramble letters into words</li></ul>



<p>To build the hash map, we will loop through the word list and load them into the hash map. Now&#8230; to find options to use for the hash map. Unlike many other languages, R doesn&#8217;t have an obvious choice for a fast key-value lookup. My first attempt at this used lists and the name property. While this worked for small examples, it wasn&#8217;t efficient for large sets.</p>



<p>And then I stumbled across R environments (longer <a href="http://adv-r.had.co.nz/Environments.html">discussion here</a>). These incorporate a hashmap structure by default, so they are a good candidate for our project. (This functionality has also been encapsulated in the &#8220;hash&#8221; package available on R-Cran &#8211; documentation&nbsp;<a href="https://cran.r-project.org/web/packages/hash/hash.pdf">here</a>.)</p>



<p>We&#8217;re ready to write our dictionary builder:</p>



<p>map &lt;- new.env(hash=T, parent=emptyenv())</p>



<p>for (word in wordlist){</p>



<p>hashword = paste(sort(unlist(strsplit(word, &#8220;&#8221;))), collapse = &#8220;&#8221;)</p>



<p>if (!is.null(map[[hashword]])){<br>map[[hashword]] &lt;- c(map[[hashword]], c=word)<br>} else {<br>map[[hashword]] &lt;- list(word)<br>}</p>



<p>}</p>



<p>This iterates across the original list of words, converting each word into a sorted string of letters. It checks the hashmap (the environment variable) to see if we&#8217;ve already seen that set of letters before. If we&#8217;ve seen it before, we <a href="https://www.programmingr.com/fast-r-append-list/">append</a> the word to the list of letters stored for that hashword value. If not, we initialize a list with that word.</p>



<p>And now we need a retrieval function. &nbsp;This is a simple lookup. Remember to sort the word before looking it up.</p>



<p>getAnagrams &lt;- function(x) {<br>return(map[[paste(sort(unlist(strsplit(x, &#8220;&#8221;))), collapse = &#8220;&#8221;)]])<br>}</p>



<p>And to see the results in action. First, looking at a known &#8220;<a href="https://anagrammaker.us/" data-type="URL" data-id="https://anagrammaker.us/">anagram</a> family&#8221;:</p>



<p>&gt; getAnagrams(&#8220;goat&#8221;)<br>[[1]]<br>[1] &#8220;goat&#8221;</p>



<p>$c<br>[1] &#8220;toga&#8221;</p>



<p>And next, trying to unscramble letters into a word (<a href="http://www.hanginghyena.com/solvers/word-scramble-solver">check here to confirm results</a>):</p>



<p>&gt; getAnagrams(&#8220;terref&#8221;)</p>



<p>[[1]]<br>[1] &#8220;ferret&#8221;</p>



<p>And there you have it. A simple anagram solver compressed into a couple of lines of R.</p>



<p>This is a decent starting point for those interested in automated puzzle solvers. A couple of useful extension of this code include solving for partial anagrams (uses some but not all letters) &#8211; output would look like <a href="http://www.hanginghyena.com/wordchumscheat">this</a>&nbsp;or <a href="http://www.hanginghyena.com/wordoxcheat">this</a>. Adding a letters-to-points score mapping would enable you to calculate scores for <a href="http://www.hanginghyena.com/solvers/scrabble-helper">scrabble</a> or <a href="http://www.hanginghyena.com/solvers/words-with-friends-helper">words with friends</a>. This works fairly well for basic <a href="https://www.programmingr.com/using-the-grepl-function-in-r%ef%bb%bf/">searches</a>. The next stage up from there generally will require a rewrite, with a faster language and more efficient data structure to address the complexity of more advanced word problems such as <a href="http://www.hanginghyena.com/solvers/boggle-solver">solving boggle</a>.</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/simple-anagram-finder-using-r/">Simple Anagram Finder Using R</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/simple-anagram-finder-using-r/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Webscraping with rvest: So Easy Even An MBA Can Do It!</title>
		<link>https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/</link>
					<comments>https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/#respond</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Mon, 07 Nov 2016 02:44:36 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1560</guid>

					<description><![CDATA[<p>This is the fourth installment in our series about web scraping with R. This includes practical examples for the leading R web scraping packages, including: RCurl package and jsonlite (for JSON). This article primarily talks about using the rvest package. We will be targeting data using CSS tags. I read the email and my heart sank. As part [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/">Webscraping with rvest: So Easy Even An MBA Can Do It!</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>This is the fourth installment in our<a href="https://www.programmingr.com/examples/examples-web-scraping-r/"> series about web scraping with R</a>. This includes practical examples for the leading R web scraping packages, including: <a href="https://www.programmingr.com/content/webscraping-using-readlines-and-rcurl/">RCurl</a> package and <a href="https://www.programmingr.com/examples/reading-json-data/">jsonlite (for JSON)</a>. This article primarily talks about using the <a href="https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/" data-type="post" data-id="1560">rvest package</a>. We will be targeting data using CSS tags.</strong></p>



<p>I read the email and my heart sank. As part of our latest project, my team was being asked to compile statistics for a large group of public companies. &nbsp;A rather diverse set of statistics, from about four different sources. And to make life better, the list was &#8220;subject to change&#8221;. Translated: be ready to update this mess at a moment&#8217;s notice&#8230;.</p>



<p>The good news. Most of the request was publicly available, crammed into the nooks and corners of various financial sites.</p>



<span id="more-1560"></span>



<p>This was a perfect use case for web scraping. An old school update (aka, the intern-o-matic model) would take about three or four hours. Even worse, it would be nearly impossible to quality check. A well written web scraper would be faster and easier to check afterwards.</p>



<h3>Getting Set Up &#8211; rvest and jsonlite</h3>



<p>We&#8217;re going to use two external libraries for this rvest tutorial;&nbsp; <code>rvest</code> and <code>jsonlite</code>. To install:</p>



<pre class="wp-block-code"><code># import rvest
install.packages("rvest")
libraries("rvest")

# r json - installing jsonlite
install.packages("jsonlite")
libraries("jsonlite")</code></pre>



<p>After installing the <code>rvest</code> and <code>jsonlite</code> libraries, I fired up Google and started&nbsp;looking for sources. The information we needed was available on several sites. After doing a little comparison and data validation, I settled on several preferred sources.</p>



<p><b>Important:&nbsp;</b>Many websites&nbsp;have policies which restrict or prohibit web scraping; the same policies generally prohibit you from doing anything else useful with the data (such as compiling it). &nbsp;If you intend to use the scraped data for public (publication) or commercial use, you should consult a lawyer to understand your legal risks. This code should be used for educational purposes only. In practice, personal scraping is difficult to detect and rarely pursued (particularly if there is a low volume of requests). Keep this in mind if you are going to&nbsp;extract data from website using R.</p>



<p>Back to our example. To reduce the risk of getting a snarky legal letter, we&#8217;re going to share a couple of examples using the package to grab information from Wikipedia. The same techniques can be used to pull data from other sites.</p>



<h3 id="-scraping-html-tables-with-rvest">Scraping HTML Tables with rvest</h3>



<p>In many cases, the data you want is neatly laid out on the page in a series of tables. Here&#8217;s a sample of rvest code where you target a specific page and pick the table you want (in order of appearance). This script is going after every item on the page within an HTML tag of &lt;table&gt; and selecting the first one.</p>



<pre class="wp-block-code"><code># rvest tutorial - extract data from website using r
src &lt;- "https://en.wikipedia.org/wiki/List_of_largest_employers_in_the_United_States"

# rvest web scraping - get the page
page &lt;- read_html(src)

# rvest html table - use html_nodes to parse html in r
# rvest html_nodes will grab all tables here; you must filter later
# html_table <a href="https://www.programmingr.com/as-vector-in-r-how-to-convert-a-data-structure-into-an-r-vector/">converts to data</a> frame
employers &lt;- page %>%
html_nodes("table") %>%
.&#91;1] %>%
html_table()

# select specific table for final output
employers &lt;- employers&#91;&#91;1]]</code></pre>



<p>This will generate a nicely formatted list of the top employers in the US. This technique can be easily extended to grab data in almost any table on a web page. Basically, grab anything enclosed within a table tag and count through the tables until you find the one you want.</p>



<p>But wait, there&#8217;s more! It slices, it dices, it even finds Julianne&#8217;s fries.</p>



<h4>Slicing and Dicing with CSS selectors</h4>



<p>The ability to select pieces of a page using CSS selectors gives you the freedom to do some creative targeting. For example, if you wanted to grab the content of a specific text box on a page. &nbsp;For this second example, we&#8217;re going to target a non-table element of the page &#8211; the list of sources at the end of the wikipedia article. On Julienning, of course (the cutting technique used to make&nbsp;<i>Julienne Fries).</i></p>



<p>A little inspect of the page reveals the sources are organized as an ordered list (&lt;ol&gt; HTML element). This list has been assigned an HTML class of &#8220;references&#8221;. We are interested in the content of each of the list element objects (li HTML element) that are children of this ordered list. This is reflected in the selection criteria below.</p>



<pre class="wp-block-code"><code># rvest web scraping - get the page
page &lt;- read_html("https://en.wikipedia.org/wiki/Julienning")

# point rvest html_nodes at list elements with class = references
# parse html in r using rvest html_text
sources &lt;- page %&lt;%
html_nodes(".references li") %&lt;%
html_text()</code></pre>



<p>The output of this:</p>



<blockquote class="wp-block-quote"><p><code>sources</code><br><code>[1] "^ a b Larousse Gastronomique. Hamlyn. 2000. p.&nbsp;642. ISBN&nbsp;0-600-60235-4.&nbsp;"</code><br><code>[2] "^ Viard, Alexandre (1820). Le Cuisinier Impérial (10th ed.). Paris. OCLC&nbsp;504878002.&nbsp;"</code></p></blockquote>



<h3>Rvest Examples: rvest div class and beyond</h3>



<p>This same technique can be used to select items based on the HTML element ID field. In simple terms:</p>



<ol><li>Target by Class ID =&gt; &nbsp;appears as &lt;div class=&#8217;target&#8217;&gt;&lt;/div&gt; =&gt; you target this as: &#8220;.target&#8221;</li><li>Target by Element ID =&gt; &nbsp;appears as &lt;div id=&#8217;target&#8217;&gt;&lt;/div&gt; =&gt; you target this as: &#8220;#target&#8221;</li><li>Target by HTML tag type =&gt; appears as &lt;table&gt;&lt;/table&gt; &nbsp;=&gt; you target this as &#8220;table&#8221;</li><li>Target child of another tag =&gt; appears as &lt;ol class=&#8217;sources&#8217;&gt;&lt;li&gt;&lt;/li&gt;&lt;ol&gt; =&gt; you target this as &#8220;sources li&#8221;</li></ol>



<p>This is just scratching the surface of what you can accomplish using CSS selector targeting. For a deeper view of the possibilities, take a look at some of the tutorials written by the JQuery community. This is a decent starting point if you need to write an R&nbsp;web crawler.</p>



<h4>JSON: On a Silver Platter&#8230;</h4>



<p>Many modern web design frameworks don&#8217;t incorporate the data request into the initial HTML document. The initial document serves as a template and the data is retrieved via a series of follow-up JavaScript calls after the page is loaded. You&#8217;ll encounter this when you &nbsp;look at the document and realize the data you&#8217;re after isn&#8217;t anywhere in the HTML (which is usually 80% JavaScript). The trick with these sites is to look at the &#8220;network activity&#8221; from the page. One of these calls is requesting and getting data. You&#8217;ll see a neatly formed JSON (JavaScript Object Notation) object returned by that request. Once you find it, try to reverse engineer the request.</p>



<p>The good news is once you&#8217;ve figured out how the request is structured, the data is usually handed to you on a silver platter. The basic design of JSON is a dictionary structure. Data is labeled (usually very well), free of display cruft, and you can filter down to the parts you want. For a deeper look at how to work with JSON, check out our <a href="https://www.programmingr.com/examples/reading-json-data/">article on this topic</a>.</p>



<h4>Other Benefits</h4>



<p>While it is always nice to automate the boring stuff, there are a couple of other advantages to using web scraping to over manual collection. The use of scripted processes makes it easier to replicate <a href="https://www.programmingr.com/r-error-messages/rep1-n-invalid-times-argument/">errors and fix</a> them. You&#8217;re no longer at the whim of a (usually bored) human data collector (aka. the inter-o-matic) grabbing the wrong fields or mis-coding a record.</p>



<p>We have also found that large scale database errors are detected faster in this approach. For example, in the corporate data collection project we mentioned earlier we noticed that the websites we were scraping generally didn&#8217;t seem to collect accurate data on certain types of companies. While this would have eventually surfaced via a manual collection effort, the process-focused element of scraping forced this issue to the surface quickly.</p>



<p>Finally, since the scraping script shrunk our refresh cycle from several hours to under a minute, we can refresh our results much more frequently.</p>



<h3>Scraping Websites with R</h3>



<p>This was the latest in our <a href="https://www.programmingr.com/examples/examples-web-scraping-r/">series on web scraping</a>. Check out one of the earlier articles to learn more about scraping:</p>



<ul><li><a href="https://www.programmingr.com/content/webscraping-using-readlines-and-rcurl/">Scraping HTML using readLines() and RCurl&nbsp;</a></li><li><a href="https://www.programmingr.com/examples/reading-json-data/">Using jsonlite to scrap data from AJAX websites&nbsp;</a></li><li>Scraper Ergo Sum &#8211;&nbsp;<a href="https://www.programmingr.com/examples/good-web-scraping-projects-r/">Suggested projects for going deeper on web scraping</a></li></ul>



<p>You may also be interested in the following</p>



<ul><li><a href="https://www.programmingr.com/content/sparql-with-r/">Accessing data for R &nbsp;using SPARQL&nbsp;(Semantic Web Queries)</a></li><li><a href="https://www.programmingr.com/examples/webscraping-stock-prices-economics-data-r/">Quantmod package for getting stock price data and economic indicators</a></li><li><a href="https://www.programmingr.com/content/animations-r/">Using R Animations to spice up your presentations</a></li></ul>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/">Webscraping with rvest: So Easy Even An MBA Can Do It!</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/webscraping-rvest-easy-mba-can/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Resume &#038; Interview Tips For R Programmers</title>
		<link>https://www.programmingr.com/content/resume-interview-tips-r-programmers/</link>
					<comments>https://www.programmingr.com/content/resume-interview-tips-r-programmers/#comments</comments>
		
		<dc:creator><![CDATA[John]]></dc:creator>
		<pubDate>Wed, 06 Jul 2016 08:04:36 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1373</guid>

					<description><![CDATA[<p>Speaking as a hiring manager, it doesn&#8217;t take much to stand out as a candidate for a statistical programming job. We just finished hiring the last of several analyst positions for a new data science unit at my day job. The final round was surprisingly less competitive that I expected; many of the candidates either [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/">Resume &#038; Interview Tips For R Programmers</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/analyst-resume/" rel="bookmark" title="How To Make Your Data Analyst Resume Stand Out">How To Make Your Data Analyst Resume Stand Out </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
<li><a href="https://www.programmingr.com/content/calling-python-r-rpython/" rel="bookmark" title="Calling Python from R with rPython">Calling Python from R with rPython </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p>Speaking as a hiring manager, it doesn&#8217;t take much to stand out as a candidate for a statistical programming job. We just finished hiring the last of several analyst positions for a new data science unit at my day job. The final round was surprisingly less competitive that I expected; many of the candidates either failed to prepare or made basic mistakes in the job search process.</p>
<p>In the interests of helping others, here are few resume and interview tips that could have improved their chances.</p>
<p><span id="more-1373"></span></p>
<h4><b>1 &#8211; Google me (and my company) </b></h4>
<p>This one is basic, but I was shocked by the volume of candidates who didn&#8217;t even bother to learn about the company or the hiring manager.</p>
<p>This is surprisingly easy to fix and is a good first step in establishing yourself as a serious candidate.</p>
<p>First, the recruiter almost always tells you that you will be meeting with Person X from Company Y, who is in Industry Z. Fantastic, feed those three pieces of information into Google or LinkedIn and see what comes up. Usually, you get some great stuff like:</p>
<ul>
<li><strong>The Hiring Manager&#8217;s LinkedIn profile:</strong> full of great information about their past and gives hints to subjects which interest them. This gives clues about things your interviewer is interested in; for example, I mention Python and the Python user group. Telling me about your Python projects would probably get you some extra credibility (just saying&#8230;.)</li>
<li><strong>Company Profile: </strong>At a minimum, read their LinkedIn or Crunch base profile and take a peek at their website; read their most recent couple of press releases (these are listed in the &#8220;News&#8221; section of Google Finance).</li>
</ul>
<p>If you&#8217;ve got the time,  look for information about how companies in that industry are using data science or technology. Google &lt;industry name&gt; and &#8220;data science&#8221; and &#8220;case study&#8221;. You&#8217;ll usually find a couple of articles about projects other people have done. Think about how we might apply them at my company; these are great interview topics (&#8220;I read Company XYZ is using <a href="https://www.programmingr.com/text-mining-in-r/">text analysis to data mine</a> customer comments, what do you guys think about this?&#8221;) for the dreaded &#8220;do you have any questions for me&#8221; portion of our conversation.</p>
<p>Humility is important here &#8211; the hiring manager knows a lot more about their industry and company that you do. But a little creative thinking can transform our interview from a painful conversation about &#8220;your greatest weakness&#8221; to a more exciting conversation about what you could do if you got the job. Guess which candidate I&#8217;m going to hire&#8230;.</p>
<h4><strong>2 &#8211; Focus Job Descriptions On Unique Lessons / Accomplishments</strong></h4>
<p>Give the hiring managers a little credit. Most entry level jobs are very similar across companies. Business analysts are generally asked to gather customer requirements. Project Managers hold meetings. Developers and Statistical Programmers write code and <a href="https://www.programmingr.com/content/validate-me-simple-test-vs-holdout-samples-in-r/">tests</a>. In fact, many time we mentally boil this down to a candidate having X years of experience, sorted into buckets (analytics / technical / business).</p>
<p>Instead of doing a recital of your everyday duties on your resume, highlight the top few things you accomplished in that position. Write a short summary of what you did and what the project either accomplished or learned. Pay close attention to anything which is different or potentially interesting to a hiring manager. Which of your accomplishments would your manager brag about to their (non-technical) VP?</p>
<p>For example, I expect any statistical <a href="https://www.programmingr.com/content/analyst-resume/">analyst has &#8220;extracted and transformed data&#8221;</a> and &#8220;updated standard reporting&#8221;. What would catch my eye is someone describing how they analyzed a marketing program (identified best segments to promote) or figured out how to speed up DNA sequencing  or moved a bunch of standard reporting to a self-service website. These type of accomplishment sets your resume apart.</p>
<p>Trust me, if you can tell me a cool story about how you made things better, I&#8217;ll assume you can probably handle the customer paperwork.</p>
<h4><strong>3 &#8211; Don&#8217;t List Technical Skills You Don&#8217;t Know (<span style="text-decoration: underline;">Very Well</span>)</strong></h4>
<p>This particular topic has ascended to the coveted status of &#8216;pet peeve&#8217;. Every technical resume contains a section which lists the <a href="https://www.programmingr.com/computing-a-neural-network-with-r-package-neuralnet/">computer languages and packages</a> that you would like me to believe you can use. That last point is crucial to the success of this section.</p>
<p>There is a misconception that having a massive list of technologies on your resume is a good thing. For most jobs and candidates, it isn&#8217;t. The reality is that my team has standardized around a couple of core technologies (R, <a href="https://www.programmingr.com/content/invalid-literal-for-int-with-base-10/">Python, SQL) and anyone joining the group will be required to learn any of the missing technologies PLUS our environment PLUS our data</a>. So there&#8217;s a tiny number of perfect unicorns roaming around out there who can know everything on Day One and a much larger number of decent candidates who know most of the package and demonstrate the ability to easily bridge any gaps. Most sane hiring managers are aware of this (and are fine with it).</p>
<p>I get a warm fuzzy feeling you can bridge the gaps when we talk about technologies that you&#8217;ve mastered, where you can list significant projects that involved that technology and discuss the details of the project. I don&#8217;t care if they were work projects or personal projects. In fact, since the professional projects I&#8217;m involved in (marketing and pricing data science) are covered by big confidentiality agreements, I often use examples from my side project (a <a href="http://www.hanginghyena.com/">word game site</a>) for technical discussions. Nobody cares if I share how to build a <a href="http://www.hanginghyena.com/scrabblecheat">scrabble cheat</a>. And many managers will give credit for expertise in a similar space. If you can master SAS, you can probably figure out R fairly quickly.</p>
<p>I do not, however, get that same warm fuzzy feeling when you indicate that the only exposure you had to a <a href="https://www.programmingr.com/remove-duplicates-in-r/">programming language</a> that you list on your resume is an online course and you&#8217;ve never actually used it for a serious project. Especially if you can&#8217;t answer basic questions about the core concepts of the language. And please, if you don&#8217;t have significant recent practical experience in a technology, don&#8217;t dress it up with verbiage indicating you&#8217;re &#8220;proficient&#8221;. The interview is pretty much over once I discover a gap between your resume and reality.</p>
<p>There&#8217;s also a question of focus. The more stuff you list, the harder it is for your audience to understand what you&#8217;re actually good at. If you boil it down to a couple of highly relevant &#8220;preferred technologies&#8221;, a hiring manager will know exactly what you&#8217;re bringing to the table. You&#8217;re also communicating you&#8217;re serious about mastering that particular technology. Scrap the fluff skills and talk about your projects.</p>
<p>In summation, don&#8217;t put any technical skill on your resume without being prepared to demonstrate significant commitment to applying it.</p>
<p>&nbsp;</p>
<h4><strong>4 &#8211; Don&#8217;t Oversell Your Online Classes</strong></h4>
<p>Sadly, that online class isn&#8217;t really a compelling signal you have technical skills.</p>
<p>First, taking an online course in data science or coding isn&#8217;t unique anymore. Most of my entry-level candidate pool claimed some form of online education or independent learning. Furthermore, they rarely provide an employer with an objective measure of technical aptitude. They do demonstrate that you&#8217;re interested in the craft, although I already expect that since you applied for the position.</p>
<p>Now &#8211; if you took that knowledge and applied it to create a useful project, that quickly flips the script. This can be anything &#8211; a website, a useful module or open-source contribution, a tutorial, or an interesting piece of data analysis posted on your blog. Our conversation will shift from a generic discussion of &#8220;the latest online course&#8221; to a more unique discussion of what you were able to accomplish with the tool. Plus you earn points for being a self-taught developer.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>Relax and Have Fun</h4>
<p>One common trait for all of our successful candidates was they were able to show our team they were genuinely interested in the mission we were asking them to perform. They spoke enthusiastically about what they could accomplish if we gave them an opportunity. This combination of technical expertise and interest in the role was what got them hired.</p>
<p>Hopefully you&#8217;re reading this article because you like the craft of R Programming and data science. So think about your next interview in that sense; not as some weird HR ritual to be endured, but an opportunity speak with the manager about how you can practice our craft. Bring your enthusiasm for R to the meeting and brainstorm with the manager about how you can use it to help them.</p>
<p>That will get you hired!</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/resume-interview-tips-r-programmers/">Resume &#038; Interview Tips For R Programmers</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/analyst-resume/" rel="bookmark" title="How To Make Your Data Analyst Resume Stand Out">How To Make Your Data Analyst Resume Stand Out </a></li>
<li><a href="https://www.programmingr.com/content/zen-and-the-art-of-competing-against-mbas/" rel="bookmark" title="Zen and The Art of Competing Against MBA&#8217;s">Zen and The Art of Competing Against MBA&#8217;s </a></li>
<li><a href="https://www.programmingr.com/content/calling-python-r-rpython/" rel="bookmark" title="Calling Python from R with rPython">Calling Python from R with rPython </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/resume-interview-tips-r-programmers/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Calling Python from R with rPython</title>
		<link>https://www.programmingr.com/content/calling-python-r-rpython/</link>
					<comments>https://www.programmingr.com/content/calling-python-r-rpython/#comments</comments>
		
		<dc:creator><![CDATA[bryan]]></dc:creator>
		<pubDate>Mon, 13 Jan 2014 19:23:34 +0000</pubDate>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">https://www.programmingr.com/?p=1030</guid>

					<description><![CDATA[<p>Python has generated a good bit of buzz over the past year as an alternative to R. Personal biases aside, an expert makes the best use of the available tools, and sometimes Python is better suited to a task. As a case in point, I recently wanted to pull data via the Reddit API. There [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/calling-python-r-rpython/">Calling Python from R with rPython</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->

More like this:<ol>
<li><a href="https://www.programmingr.com/content/installing-quantstrat-r-forge-and-source/" rel="bookmark" title="Installing quantstrat from R-forge and source">Installing quantstrat from R-forge and source </a></li>
<li><a href="https://www.programmingr.com/content/animations-r/" rel="bookmark" title="Animations in R &#8211; How to Make Animated Graphs">Animations in R &#8211; How to Make Animated Graphs </a></li>
<li><a href="https://www.programmingr.com/content/remove-outliers-in-r/" rel="bookmark" title="How to Remove Outliers in R">How to Remove Outliers in R </a></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[
<p>Python has generated a good bit of buzz over the past year as an alternative to R. Personal biases aside, an expert makes the best use of the available tools, and sometimes Python is better suited to a task. As a case in point, I recently wanted to pull data via the Reddit API. There isn&#8217;t an R package that provides easy access to the Reddit API, but there is a very well designed and documented Python module called <a title="Python Reddit API Wrapper" href="https://praw.readthedocs.org/en/latest/">PRAW </a>(or, the Python Reddit API Wrapper). Using this module I was able to develop a Python-based solution to get and analyze the data I needed without too much trouble.</p>



<p>However, I prefer working in R, so I was glad to discover the <a title="rPython" href="http://cran.r-project.org/web/packages/rPython/index.html">rPython</a> package, which enables calling Python scripts from R. After finding rPython, I was able to rewrite my purely Python script as a primarily R-based program.</p>



<p>If you want to use rPython there are a couple of prerequisites you&#8217;ll need to address if you haven&#8217;t already. No surprise, you&#8217;ll need to have Python installed. After that, you&#8217;ll need to install the PRAW module via <code>pip install praw</code>. Finally, install the rPython package from CRAN. (But see the note below first if you&#8217;re on Windows.)</p>



<p>After you&#8217;ve completed those steps, it&#8217;s as easy as writing your <a href="https://www.programmingr.com/max-must-be-larger-than-min-in-range-parameter/">Python</a> script and adding a line or two to your R code.</p>



<p>First create a Python script that imports the praw module and does the first data call:</p>



<pre class="wp-block-code"><code>import praw

# Set the user agent information
# IMPORTANT: Change this if you borrow this code. Reddit has very strong
# guidelines about how to report user agent information
r = praw.Reddit('Check New Articles script based on code by ProgrammingR.com')

# Create a (lazy) generator that will get the data when we call it below
new_subs = r.get_new(limit=100)

# Get the data and put it into a usable format
new_subs=[str(x) for x in new_subs]</code></pre>



<p>Since the Python session is persistent, we can also create a shorter Python script that we can use to fetch updated data without reimporting the praw module</p>



<pre class="wp-block-code"><code># Create a (lazy) generator that will get the data when we call it below
new_subs = r.get_new(limit=100)

# Get the data and create a list of strings
new_subs=[str(x) for x in new_subs]</code></pre>



<p>Finally, some R code that calls the Python script and gets the data from the Python variables we create:</p>



<pre class="wp-block-code"><code>library(rPython)

# Load/run the main Python script
python.load("GetNewRedditSubmissions.py")

# Get the variable
new_subs_data &lt;- python.get("new_subs")

# Load/run re-fecth script
python.load("RefreshNewSubs.py")

# Get the updated variable
new_subs_data &lt;- python.get("new_subs")

head(new_subs_data)</code></pre>



<h2>A few final notes:</h2>



<ul><li>The main drawback to the rPython package is that it currently doesn&#8217;t run on Windows. The developer (Carlos J. Gil Bellosta) is working to fix this, though. If that wrinkle gets resolved, I can see this being a very popular package.</li><li>You can use RStudio to write your <a href="https://www.programmingr.com/content/typeerror-a-bytes-like-object-is-required-not-str/">Python</a> programs, which is easier than switching to another IDE for simple scripts. However, it causes an issue with EOL characters. Namely, you need to add a blank line at the end of each .py file to get it to load properly.</li><li>The Python session rPython initiates is associated with the R session. Any Python modules you load or variables you create will be available until you remove them or close the R session.</li></ul>
<p>The post <a rel="nofollow" href="https://www.programmingr.com/content/calling-python-r-rpython/">Calling Python from R with rPython</a> appeared first on <a rel="nofollow" href="https://www.programmingr.com">ProgrammingR</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-list'>
<!-- YARPP List -->
<p>More like this:</p><ol>
<li><a href="https://www.programmingr.com/content/installing-quantstrat-r-forge-and-source/" rel="bookmark" title="Installing quantstrat from R-forge and source">Installing quantstrat from R-forge and source </a></li>
<li><a href="https://www.programmingr.com/content/animations-r/" rel="bookmark" title="Animations in R &#8211; How to Make Animated Graphs">Animations in R &#8211; How to Make Animated Graphs </a></li>
<li><a href="https://www.programmingr.com/content/remove-outliers-in-r/" rel="bookmark" title="How to Remove Outliers in R">How to Remove Outliers in R </a></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.programmingr.com/content/calling-python-r-rpython/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
