title: Create new column from an existing column with pattern matching in R
body: <p>I'm trying to add a new column based on another using pattern matching. 
  I've read <a href="https://stackoverflow.com/questions/29566343/create-a-new-column-in-a-r-dataframe-using-pattern-matching">this post</a>, but not getting the desired output. </p>
  
  <p>I want to create a new column (SubOrder) based on the GreatGroup column. 
  I have tried the following: </p>
  
  <pre><code>SubOrder &lt;- rep(NA_character_, length(myData))
  
  SubOrder[grepl("udults", myData, ignore.case = TRUE)] &lt;-  "Udults"
  SubOrder[grepl("aquults", myData, ignore.case = TRUE)] &lt;-  "Aquults"
  SubOrder[grepl("aqualfs", myData, ignore.case = TRUE)] &lt;-  "aqualfs"
  SubOrder[grepl("humods", myData, ignore.case = TRUE)] &lt;-  "humods"
  SubOrder[grepl("udalfs", myData, ignore.case = TRUE)] &lt;-  "udalfs"
  SubOrder[grepl("orthods", myData, ignore.case = TRUE)] &lt;-  "orthods"
  SubOrder[grepl("udalfs", myData, ignore.case = TRUE)] &lt;-  "udalfs"
  SubOrder[grepl("psamments", myData, ignore.case = TRUE)] &lt;-  "psamments"
  SubOrder[grepl("udepts", myData, ignore.case = TRUE)] &lt;-  "udepts"
  SubOrder[grepl("fluvents", myData, ignore.case = TRUE)] &lt;-  "fluvents"
  SubOrder[grepl("aquods", myData, ignore.case = TRUE)] &lt;-  "aquods"
  </code></pre>
  
  <p>For example, I'm looking for "udults" inside any word, such as Hapludults or Paleudults, and return just "udults". </p>
  
  <p>EDIT: If anyone wants to take a shot at  alistaire's comment, this is the search patterns I would use. </p>
  
  <pre><code> subOrderNames &lt;- c("Udults", "Aquults", "Aqualfs", "Humods", "Udalfs", "Orthods", "Psamments", "Udepts", "fluvents")
  </code></pre>
  
  <p>Example data below. </p>
  
  <pre><code>myData &lt;- dput(head(test))
  structure(list(1:6, SID = c(200502L, 200502L, 200502L, 200502L, 
  200502L, 200502L), Groupdepth = c(11L, 12L, 13L, 14L, 21L, 22L
  ), AWC0to10 = c(0.12, 0.12, 0.12, 0.12, 0.12, 0.12), AWC10to20 = c(0.12, 
  0.12, 0.12, 0.12, 0.12, 0.12), AWC20to50 = c(0.12, 0.12, 0.12, 
  0.12, 0.12, 0.12), AWC50to100 = c(0.15, 0.15, 0.15, 0.15, 0.15, 
  0.15), Db3rdbar0to10 = c(1.43, 1.43, 1.43, 1.43, 1.43, 1.43), 
      Db3rdbar10to20 = c(1.43, 1.43, 1.43, 1.43, 1.43, 1.43), Db3rdbar20to50 = c(1.43, 
      1.43, 1.43, 1.43, 1.43, 1.43), Db3rdbar50to100 = c(1.43, 
      1.43, 1.43, 1.43, 1.43, 1.43), HydrcRatngPP = c(0L, 0L, 0L, 
      0L, 0L, 0L), OrgMatter0to10 = c(1.25, 1.25, 1.25, 1.25, 1.25, 
      1.25), OrgMatter10to20 = c(1.25, 1.25, 1.25, 1.25, 1.25, 
      1.25), OrgMatter20to50 = c(1.02, 1.02, 1.02, 1.02, 1.02, 
      1.02), OrgMatter50to100 = c(0.12, 0.12, 0.12, 0.12, 0.12, 
      0.12), Clay0to10 = c(8, 8, 8, 8, 8, 8), Clay10to20 = c(8, 
      8, 8, 8, 8, 8), Clay20to50 = c(9.4, 9.4, 9.4, 9.4, 9.4, 9.4
      ), Clay50to100 = c(40, 40, 40, 40, 40, 40), Sand0to10 = c(85, 
      85, 85, 85, 85, 85), Sand10to20 = c(85, 85, 85, 85, 85, 85
      ), Sand20to50 = c(83, 83, 83, 83, 83, 83), Sand50to100 = c(45.8, 
      45.8, 45.8, 45.8, 45.8, 45.8), pHwater0to20 = c(6.3, 6.3, 
      6.3, 6.3, 6.3, 6.3), Ksat0to10 = c(23, 23, 23, 23, 23, 23
      ), Ksat10to20 = c(23, 23, 23, 23, 23, 23), Ksat20to50 = c(19.7333, 
      19.7333, 19.7333, 19.7333, 19.7333, 19.7333), Ksat50to100 = c(9, 
      9, 9, 9, 9, 9), TaxClName = c("Fine, mixed, semiactive, mesic Oxyaquic Hapludults", 
      "Fine, mixed, semiactive, mesic Oxyaquic Hapludults", "Fine, mixed, semiactive, mesic Oxyaquic Hapludults", 
      "Fine, mixed, semiactive, mesic Oxyaquic Hapludults", "Fine, mixed, semiactive, mesic Oxyaquic Hapludults", 
      "Fine, mixed, semiactive, mesic Oxyaquic Hapludults"), GreatGroup = c("Hapludults", 
      "Hapludults", "Hapludults", "Hapludults", "Hapludults", "Hapludults"
      )), .Names = c("", "SID", "Groupdepth", "AWC0to10", "AWC10to20", 
  "AWC20to50", "AWC50to100", "Db3rdbar0to10", "Db3rdbar10to20", 
  "Db3rdbar20to50", "Db3rdbar50to100", "HydrcRatngPP", "OrgMatter0to10", 
  "OrgMatter10to20", "OrgMatter20to50", "OrgMatter50to100", "Clay0to10", 
  "Clay10to20", "Clay20to50", "Clay50to100", "Sand0to10", "Sand10to20", 
  "Sand20to50", "Sand50to100", "pHwater0to20", "Ksat0to10", "Ksat10to20", 
  "Ksat20to50", "Ksat50to100", "TaxClName", "GreatGroup"), class = c("tbl_df", 
  "data.frame"), row.names = c(NA, -6L))
  </code></pre>