문제

I'm having a data reshaping problem that I could use some help.

 ID          X1         X2         X3         X4         X5
6001 Certificate  Associate Bachelor's   Master's   Doctoral
5001 Certificate  Associate Bachelor's           
3311 Certificate  Associate Bachelor's           
1981 Certificate  Associate Bachelor's   Master's
4001   Associate Bachelor's   Master's           
2003   Associate Bachelor's   Master's   Doctoral
2017 Certificate  Associate                      
1001   Associate Bachelor's   Master's           
5002  Bachelor's

I need to make these into dummy variables

  ID    Certificate     Associates      Bachelor         Master        Doctoral      
6001              1              1             1              1               1
5001              1              1             1              0               0 
2017              1              1             0              0               0

Any suggestions?

도움이 되었습니까?

해결책

Try the reshape2 package. I've assumed your dataset is called df:

require(reshape2)
# First, melt your data, using 
m.df = melt(df, id.vars="ID")
# Then `cast` it
dcast(m.df, ID ~ value, length)
#     ID Var.2 Associate Bachelor's Certificate Doctoral Master's
# 1 1001     2         1          1           0        0        1
# 2 1981     1         1          1           1        0        1
# 3 2003     1         1          1           0        1        1
# 4 2017     3         1          0           1        0        0
# 5 3311     2         1          1           1        0        0
# 6 4001     2         1          1           0        0        1
# 7 5001     2         1          1           1        0        0
# 8 5002     4         0          1           0        0        0
# 9 6001     0         1          1           1        1        1

I haven't tested it, but if you make your factors ordered, it might control the order of the output columns.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top