Search code examples
rif-statementgrepl

Label a dataframe with if or ifelse and grepl


I have a dataset that captures the data of two e-learning modules. An e-learning module is indicated with a code that consists of numbers and letters. For example 1A21 and 2N34.

With the following code I am able to create a column in which I give the module code a name. To make it more understandable to me as a human.

df$Module <- ifelse(grepl("1A21", df$ModuleCode), "R-101", "R-201")

The code works like a charm. However, I am curious, how does it work if your dataframe starts to capture data of more than two e-learning modules? How would one solve this?

If this question is a duplicate, I apologize in advance.


Solution

  • I am not understanding your renaming logic. But following my example you are able to assign each ModuleCode any module name.

    library(tidyverse)
     df <- tibble::tibble(ModuleCode = c("1A21", "2N34", "3P04"))
     df
    # A tibble: 3 x 1
      ModuleCode
      <chr>     
    1 1A21      
    2 2N34      
    3 3P04      
     df %>% dplyr::mutate(Module = dplyr::case_when(
         grepl("1A21",ModuleCode) ~ "R-101",
         grepl("2N34", ModuleCode) ~ "R-201",
         grepl("3P04", ModuleCode) ~ "R-301"
     ))
    # A tibble: 3 x 2
      ModuleCode Module
      <chr>      <chr> 
    1 1A21       R-101 
    2 2N34       R-201 
    3 3P04       R-301