分类变量的分类

时间:2018-02-02 13:26:55

标签: r

我正试图在R中对分类变量进行BIN但是我无法将给定的信息聚类成一个有用的组。

例如:采用以下变量Grade,其中包含下面提到的唯一值。

Grade <- OM1 OM2 PC1 SC1 SC3 AM1 AM3 PL2 SC2 UH1 SS2 PM3 

上面提到的是公司中分配给员工的不同等级。我希望将信息分组到有意义的组中,如:

GROUP 1 - Low grades - 应包含OM1OM2PC1

等受训人员的低优先级

GROUP2 - Medium grades应包含具有3到3年经验的员工的中等优先级,例如SC3AM1AM3和{ {1}}

PL2 - GROUP3应包含针对VPS和投放管理员的高优先级等级,例如High gradesSC3AM1AM3

任何帮助都将深表感谢。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我将假设第3组的成绩未在第1组和第2组中指定。

Grade <- c("OM1", "OM2", "PC1", "SC1", "SC3", "AM1", "AM3", "PL2", "SC2", "UH1", "SS2", "PM3") 


base R:
ifelse(Grade %in% c("OM1", "OM2", "PC1"), "Low grades",
       ifelse(Grade %in% c("SC1", "SC3", "AM1", "AM3", "PL2"), "Medium grades", "High grades"))

dplyr:
case_when(Grade %in% c("OM1", "OM2", "PC1") ~ "Low grades",
          Grade %in% c("SC1", "SC3", "AM1", "AM3", "PL2") ~ "Medium grades",
          TRUE ~ "High grades")

答案 1 :(得分:0)

我是通过合并(在基础R中)或在您已经拥有的数据之间的连接(在dplyr中)来做到这一点我假设您已经拥有一个具有字段的数据框dat Grade。然后你可以做以下事情。 (调用tribble只是创建显示成绩分档的数据框的众多方法之一。)

library(dplyr)
grade_bins = tribble(
    ~Grade, ~bin,
    'OM1', 'low',
    'OM2', 'low',
    'PC1', 'low',
    'SC1', 'med', 
    'SC3', 'med',  
    'AM1', 'med', 
    'AM3', 'med', 
    'PL2', 'med',
    'SC2', 'high',
    'UH1', 'high',
    'SS2', 'high',
    'PM3', 'high')
dat_with_grades = left_join(dat, grade_levels, by = 'Grade')

我做left_join因为根据我的经验,这些类型的数据集最终会显示您不知道的变量值(在这种情况下,员工等级),您不知道存在。在这种情况下,dat_with_grades只会为这些员工提供NA&#39;}等级,而不是默默地放弃它们。