0

I have a diet data of birds. I want to convert this data into multiple columns with binary (zeros and ones) distributions. See below:

Input:

#      Diet
#sp1 "insect"
#sp2 "seeds"
#sp3 "insect"
#sp4 "fruits"
#sp5 "seeds"
#sp6 "insect"
#sp7 "seeds"
#sp8 "insect"
#sp9 "fruits"

$ Diet: Factor w/ 3 levels "insect","seeds","fruits"

Expected Output:

  #     insect   seeds   fruits    
  #sp1    1        0       0                   
  #sp2    0        1       0
  #sp3    1        0       0
  #sp4    0        0       1                  
  #sp5    0        1       0
  #sp6    1        0       0 
  #sp7    0        1       0             
  #sp8    1        0       0  
  #sp9    0        0       1
Yuhao Zhao
  • 29
  • 5

1 Answers1

-1

You can use cSplit_e from splitstackshape -

splitstackshape::cSplit_e(df, 'Diet', type = 'character', fill = 0)

#      Diet Diet_fruits Diet_insect Diet_seeds
#sp1 insect           0           1          0
#sp2  seeds           0           0          1
#sp3 insect           0           1          0
#sp4 fruits           1           0          0
#sp5  seeds           0           0          1
#sp6 insect           0           1          0
#sp7  seeds           0           0          1
#sp8 insect           0           1          0
#sp9 fruits           1           0          0
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213