merging two dataframes creates extra rows in R
<p>I have two dataframes. </p>

<p><code>a</code> = raw dataset with thousands of observations of different weather events. 6000 obs.</p>

<pre><code>   STATE       EVTYPE
1     AL WINTER STORM
2     AL      TORNADO
3     AL    TSTM WIND
4     AL    TSTM WIND
5     AL    TSTM WIND
6     AL         HAIL
7     AL    HIGH WIND
8     AL    TSTM WIND
9     AL    TSTM WIND
10    AL    TSTM WIND
</code></pre>

<p><code>b</code> = a dictionary table, which has a standard spelling for most of the weather events. 500 obs.</p>

<pre><code>    EVTYPE    evmatch
71         DUST DEVEL DUST DEVIL
72         DUST DEVIL DUST DEVIL
73         DUST DEVIL DUST DEVIL
74         DUST STORM DUST STORM
75        EARLY FROST       &lt;NA&gt;
76         EARLY RAIN       &lt;NA&gt;
</code></pre>

<p>both are merged into <code>df_new</code> by <code>evtype</code></p>

<pre><code>library(dplyr)
df_new &lt;- left_join(a, b, by = c("EVTYPE"))
STATE       EVTYPE           evmatch
1     AL WINTER STORM      WINTER STORM
2     AL      TORNADO           TORNADO
3     AL    TSTM WIND THUNDERSTORM WIND
4     AL    TSTM WIND THUNDERSTORM WIND
5     AL    TSTM WIND THUNDERSTORM WIND
6     AL         HAIL              HAIL
7     AL    HIGH WIND         HIGH WIND
8     AL    TSTM WIND THUNDERSTORM WIND
9     AL    TSTM WIND THUNDERSTORM WIND
10    AL    TSTM WIND THUNDERSTORM WIND
11    AL   HEAVY RAIN        HEAVY RAIN
12    AL  FLASH FLOOD       FLASH FLOOD
13    AL    TSTM WIND THUNDERSTORM WIND
14    AL   HEAVY RAIN        HEAVY RAIN
15    AL    TSTM WIND THUNDERSTORM WIND
</code></pre>

<p>When I join the two, I end up with a dataset that has more obs than the original. </p>

<p>I.e. <code>a</code> has 6000 obs and <code>df_new</code> has 69400. </p>

<p>How can I merge both datasets so that the resulting df is the same of the original dataframe. </p>

<h2>context:</h2>

<p>The original dataset has multiple typos/spellings for the same weather event, i.e. <code>dust devel</code>, <code>dust devil</code>.</p>

<p>In order to run analysis, each observation needs standard spelling. For example, I am unable to run analysis on <code>dust devil</code> because of the multiple observations of the same event have different spellings. </p>

<p>I've created a "dictionary" that has the official spelling for each event type, i.e.  <code>dust devel</code>, <code>dust devil</code> are both <code>dust devil</code> and <code>tstm wind</code> is <code>thunderstorm wind</code></p>

<p>I want to add a column onto the original dataset, showing the correct spelling for each weather event. </p>

<p>However, my resulting dataset has extra rows. </p>