Mutating dummy variables in dplyr

前端 未结 3 1524
名媛妹妹
名媛妹妹 2021-01-02 23:24

I want to create 7 dummy variables -one for each day, using dplyr

So far, I have managed to do it using the sjmisc package and the to_dummy

3条回答
  •  自闭症患者
    2021-01-02 23:39

    An alternative solution using dummies() which I think would be quicker would be

    mydf = data.frame(x=rep(letters[1:9]),
                   day=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Fri","Mon"))
    
    
    library(dummies)
    
    mydf <- cbind(mydf, dummy(mydf$day, sep = "_"))
    

    That yields

    x   day mydf_Fri mydf_Mon mydf_Sat mydf_Sun mydf_Thurs mydf_Tues mydf_Wed
    1 a   Mon        0        1        0        0          0         0        0
    2 b  Tues        0        0        0        0          0         1        0
    3 c   Wed        0        0        0        0          0         0        1
    4 d Thurs        0        0        0        0          1         0        0
    5 e   Fri        1        0        0        0          0         0        0
    6 f   Sat        0        0        1        0          0         0        0
    7 g   Sun        0        0        0        1          0         0        0
    8 h   Fri        1        0        0        0          0         0        0
    9 i   Mon        0        1        0        0          0         0        0
    

    Then you can use gsub() to have cleaner names

    names(mydf) = gsub("mydf_", "", names(mydf))
    head(mydf)
      x   day Fri Mon Sat Sun Thurs Tues Wed
    1 a   Mon   0   1   0   0     0    0   0
    2 b  Tues   0   0   0   0     0    1   0
    3 c   Wed   0   0   0   0     0    0   1
    4 d Thurs   0   0   0   0     1    0   0
    5 e   Fri   1   0   0   0     0    0   0
    6 f   Sat   0   0   1   0     0    0   0
    

提交回复
热议问题