Reconstruct a categorical variable from dummies in R

前端 未结 3 512
予麋鹿
予麋鹿 2021-01-15 16:40

Heyho, I am a beginner in R and have a problem to which I couldn\'t find a solution so far. I would like to transform dummy variables back to categorical variables.

3条回答
  •  南方客
    南方客 (楼主)
    2021-01-15 17:13

    You can do this with data.table

    id_cols = c("x1", "x2") 
    data.table::melt.data.table(data = dt, id.vars = id_cols, 
                                na.rm = TRUE, 
                                measure = patterns("dummy"))
    

    Example:

    t = data.table(dummy_a = c(1, 0, 0), dummy_b = c(0, 1, 0), dummy_c = c(0, 0, 1), id = c(1, 2, 3))
    data.table::melt.data.table(data = t, 
                                id.vars = "id", 
                                measure = patterns("dummy_"), 
                                na.rm = T)[value == 1, .(id, variable)]
    

    Output

       id variable
    1:  1  dummy_a
    2:  2  dummy_b
    3:  3  dummy_c
    

    It's even easier if you remplaze 0 by NA, so na.rm = TRUE in melt will drop every row with NA

提交回复
热议问题