Taren Shaw
Taren Shaw

Reputation: 109

Preserve column name when making function

I have a dataframe that looks like this:

  ï..Employee_Name EmpID MarriedID MaritalStatusID GenderID EmpStatusID DeptID PerfScoreID FromDiversityJobFairID
1:   Adinolfi, Wilson  K 10026         0               0        1           1      5           4                      0
2: Ait Sidi, Karthikeyan 10084         1               1        1           5      3           3                      0
3:     Akinkuolie, Sarah 10196         1               1        0           5      5           3                      0
4:          Alagbe,Trina 10088         1               1        0           1      5           3                      0
5:       Anderson, Carol 10069         0               2        0           5      5           3                      0
6:       Anderson, Linda 10002         0               0        0           1      5           4                      0

I wrote a count function:

HRdata_factor_count <- function(df, var) {
  df %>% 
    count(df[[var]], sort = T) %>% 
    rename(Variable = `df[[var]]`) %>% 
    mutate(Variable = factor(Variable)) %>% 
    mutate(Variable = fct_reorder(Variable, n ))
}

It outputs "variable" instead of the name of the variable given to the var argument:

  Variable   n
1:        0 187
2:        1 124

I would like to maintain the name of the variable that I tell the function to count without having to rename it inside the body of the function.

Upvotes: 0

Views: 29

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 389335

You can try this function :

library(dplyr)

HRdata_factor_count <- function(df, var) {
  df %>% 
    count(.data[[var]], sort = T) %>% 
    mutate(!!var := factor(.data[[var]])) 
}

Upvotes: 2

Related Questions