The MELT function converts wide data into Long data dcast functions to convert Long data into wide data
> dt = fread ("melt_default.csv") > dt family_id age_mother dob_child1 dob_child2 dob_child31:1 30 1998-11-26 2000-01-29 na2:2 1996-06-22 NA na3:3 26 2002-07-11 2004-04-05 2007-09-024:4 32 2004-10-10 2009-08-27 2012-07-215:5 29 2000-12-05 2005-02-2 8 na> dt.m1 <-Melt (DT, measure.vars = C ("Dob_child1", "Dob_child2", "dob_child3"), + variable. name = "Child", Value.name = "dob") > Dt.m1 family_id age_mother Child DOB 1:1 dob_ch Ild1 1998-11-26 2:2 dob_child1 1996-06-22 3:3 4:4 dob_child1 2002-07-11 Dob_child1 2004-10-10 5:5 2000-12-05 dob_child1 6:1 dob_child2 2000-01-2 9 7:2 dob_child2 NA 8:3 2004-04-05 dob_child2 9:4 dob_ Child2 2009-08-2710: 5 dob_child2 2005-02-2811:1 dob_child3 na12:2 dob_child3 Na13:3 dob_child3 2007-09-0214:4 dob_child3 2012-07-2115:5 Dob_child3 na> dcast (dt.m1, family_id + Age_mother ~ Child, Value.var = "dob") family_id Age_mother Dob_c Hild1 dob_child2 dob_child31:1 1998-11-26 2000-01-29 na2:2 27 1996-06-22 NA na3:3 26 2002-07-11 2004-04-05 2007-09-024:4 32 2004-10-10 2009-08-27 201 2-07-215:5 2000-12-05 2005-02-28 NA
This can be done for more complex data
> dt <-fread ("Melt_enhanced.csv") > dt family_id age_mother dob_child1 dob_child2 dob_child3 gender_child1 gend Er_child2 gender_child31:1 1998-11-26 2000-01-29 NA 1 2 NA2 : 2 1996-06-22 na na 2 na na3:3 26 2 002-07-11 2004-04-05 2007-09-02 2 2 14:4 32 2004-10-10 2009-08-27 201 2-07-21 1 1 15:5 2000-12-05 2005-02-28 NA 2 1 na> dt.m2 <-Melt (DT, measure = Patterns ("^dob", "^gender"), Value.name = C ("Dob", "Gender")) & Gt DT.M2 family_id age_mother Variable DOB gender 1:1 30 1 1998-11-26 1 2:2 27 1 1996-06-22 2 3:3 26 1 2002-07-11 2 4:4 32 1 2 004-10-10 1 5: 5 29 1 2000-12-05 2 6:1 30 2 2000-01-29 2 7:2 27 2 na na 8:3 26 2 2004-04-05 2 9:4 32 2 2009-08-27 110:5 2 2005-02-28 111:1 3 NA na12:2 3 NA na13:3 26 3 2007-09-02 114:4 32 3 2012-07-21 115:5 3 NA na> dt.c2 <-dcast (dt.m2, family_id + age_mother ~ variable, Value.var = C ("Dob", "gender")) > Dt.c2 family_id age_mother dob_1 dob_2 dob_3 gender_1 gend er_2 gender_31:1 1998-11-26 2000-01-29 NA 1 2 na2:2 27 19 96-06-22 na na 2 na na3:3 26 2002-07-11 2004-04-05 2007-09-02 2 2 14: 4 32 2004-10-10 2009-08-27 2012-07-21 1 1 15:5 29 2000-12-05 2005-02-28 Na 2 1 na
R Language Learning Note (17): Use of melt and Dcast functions in data.table packages