title: Only omit NA that does not overlap with other NA in a certain column
body: <p>Let say I have a data frame that looks like this : </p>
  
  <pre><code>&gt;df
  col1   col2   col3
  
   12    NA      2 
   21    11     NA
   NA     2     NA
   3     NA     NA
   NA    NA      4
   8     12      5
   41    39      9
  </code></pre>
  
  <p>I want to omit the NA, but the NA in col3 is a piece of precious information, so I don't want to fill it in with any other value without more information. Thus, I want to omit the NA that does not overlap with the NA in col3 only. </p>
  
  <p>So it would look like this :</p>
  
  <pre><code>&gt;df
  col1   col2   col3
  
   21    11     NA
   NA     2     NA
   3     NA     NA
   8     12      5
   41    39      9
  </code></pre>
  
  <p>The only reason why NA in col2 and col1 is still there because deleting their row will cause the NA in col3 to be deleted also, which is what I want to prevent. Thus, I can tolerate those leftover NA from col1 and col2.</p>
  
  <p>Is there any convenient way for me to do this or any package to tackle this problem? I have tried using filter :</p>
  
  <pre><code>df &lt;- df %&gt;% filter(complete.cases(df[, -3]))
  </code></pre>
  
  <p>But it became like this instead since there is overlapping NA :</p>
  
  <pre><code> &gt;df
   col1   col2   col3
  
   21    11     NA
   8     12      5
   41    39      9
  </code></pre>
  
  <p>Any thoughts? Thanks in advance~</p>