Dear all I have a data.frame like that : father mother num_daughter daughter 291 3906 0 NULL 275 4219 0 NULL 273 4236 1 49410 281 4163 1 49408 274 4226 1 49406 295 3869 2 49403 49404 287 4113 0 NULL 295 3871 1 49401 292 3895 4 49396 49397 49398 49399 291 3900 3 49392 How to read it into R and transform it like that: father mother num_daughter daughter1 daughter2 daughter3 daughter4 291 3906 0 NULL 275 4219 0 NULL 273 4236 1 49410 281 4163 1 49408 274 4226 1 49406 295 3869 2 49403 49404 287 4113 0 NULL 295 3871 1 49401 292 3895 4 49396 49397 49398 49399 291 3900 3 49392 library (plyr) and library (reshape2) and other good packages are OK for me. Thanks a lot! Yao He ????????????????????????? Master candidate in 2rd year Department of Animal genetics & breeding Room 436,College of Animial Science&Technology, China Agriculture University,Beijing,100193 E-mail: yao.h.1988 at gmail.com ??????????????????????????
I don't really understand this data table, but maybe this modification will give you the idea: dat <- read.table(text="father mother num_daughter daughter 291 3906 0 NA 275 4219 0 NA 273 4236 1 49410 281 4163 1 49408 274 4226 1 49406 295 3869 2 49403 287 4113 0 NA 295 3871 1 49401 292 3895 4 49396 291 3900 3 49392", header=TRUE) library(reshape2) dat$num_daughter <- paste0("daughter", dat$num_daughter) dcast(dat, ... ~ num_daughter, value.var="daughter") Best, Ista On Wed, Jan 23, 2013 at 7:42 AM, Yao He <yao.h.1988 at gmail.com> wrote:> Dear all > > I have a data.frame like that : > > father mother num_daughter daughter > 291 3906 0 NULL > 275 4219 0 NULL > 273 4236 1 49410 > 281 4163 1 49408 > 274 4226 1 49406 > 295 3869 2 49403 > 49404 > 287 4113 0 NULL > 295 3871 1 49401 > 292 3895 4 49396 > 49397 > 49398 > 49399 > 291 3900 3 49392 > > How to read it into R and transform it like that: > > father mother num_daughter daughter1 daughter2 daughter3 daughter4 > 291 3906 0 NULL > 275 4219 0 NULL > 273 4236 1 49410 > 281 4163 1 49408 > 274 4226 1 49406 > 295 3869 2 49403 49404 > 287 4113 0 NULL > 295 3871 1 49401 > 292 3895 4 49396 49397 49398 49399 > 291 3900 3 49392 > > library (plyr) and library (reshape2) and other good packages are OK for me. > > Thanks a lot! > > Yao He > ????????????????????????? > Master candidate in 2rd year > Department of Animal genetics & breeding > Room 436,College of Animial Science&Technology, > China Agriculture University,Beijing,100193 > E-mail: yao.h.1988 at gmail.com > ?????????????????????????? > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Hi, It's not clear regarding those blanks especially, the num_daughter.? I guess the father and mother would be the same as the previous row. Deleting those rows: df1 <- read.table(text="father? mother? num_daughter??? daughter 291??? 3906??? 0????? NA 275??? 4219??? 0????? NA 273??? 4236??? 1????? 49410 281??? 4163??? 1????? 49408 274??? 4226??? 1????? 49406 295??? 3869??? 2????? 49403 287??? 4113??? 0????? NA 295??? 3871??? 1????? 49401 292??? 3895??? 4????? 49396 291??? 3900??? 3????? 49392", header=TRUE) reshape(df1,v.names="daughter",idvar=c("father","mother"),timevar="num_daughter",direction="wide") A.K. ----- Original Message ----- From: Yao He <yao.h.1988 at gmail.com> To: R help <r-help at r-project.org> Cc: Sent: Wednesday, January 23, 2013 7:42 AM Subject: [R] how to read a df like that and transform it? Dear all I have a data.frame like that : father??? mother??? num_daughter??? daughter 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403 ??? ??? ??? ? ? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396 ??? ??? ??? ? ? ? ? 49397 ??? ??? ??? ? ? ? ? 49398 ??? ??? ??? ? ? ? ? 49399 291??? 3900??? 3??? 49392 How to read it into R and transform it like that: father mother??? num_daughter? daughter1? daughter2? daughter3 daughter4 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396? ? ? 49397? ? 49398? 49399 291??? 3900??? 3??? 49392 library (plyr) and library (reshape2) and other good packages are? OK for me. Thanks a lot! Yao He ????????????????????????? Master candidate in 2rd year Department of Animal genetics & breeding Room 436,College of Animial Science&Technology, China Agriculture University,Beijing,100193 E-mail: yao.h.1988 at gmail.com ?????????????????????????? ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Hi, May be this helps: df1<-read.table(text=" father,mother,num_daughter,daughter 291,3906,0, 275,4219,0, 273, 4236,1,49410 281,4163,1,49408 274, 4226,1,49406 295, 3869,2,49403 295,3869,2,49404 287,4113,0, 295, 3871,1,49401 292, 3895,4,49396 292,3895,4, 49397 292,3895,4,49398 292,3895,4,49399 291, 3900,3,49392 291, 3900,3, 291, 3900,3, ",sep=",",header=TRUE,stringsAsFactors=F,na.strings="") df1$num_daughter[df1$num_daughter>1]<-ave(df1$num_daughter[df1$num_daughter>1],df1$num_daughter[df1$num_daughter>1],FUN=seq_along) ?reshape(df1,v.names="daughter",idvar=c("father","mother"),timevar="num_daughter",direction="wide") #?? father mother daughter.0 daughter.1 daughter.2 daughter.3 daughter.4 #1???? 291?? 3906???????? NA???????? NA???????? NA???????? NA???????? NA #2???? 275?? 4219???????? NA???????? NA???????? NA???????? NA???????? NA #3???? 273?? 4236???????? NA????? 49410???????? NA???????? NA???????? NA #4???? 281?? 4163???????? NA????? 49408???????? NA???????? NA???????? NA #5???? 274?? 4226???????? NA????? 49406???????? NA???????? NA???????? NA #6???? 295?? 3869???????? NA????? 49403????? 49404???????? NA???????? NA #8???? 287?? 4113???????? NA???????? NA???????? NA???????? NA???????? NA #9???? 295?? 3871???????? NA????? 49401???????? NA???????? NA???????? NA #10??? 292?? 3895???????? NA????? 49396????? 49397????? 49398????? 49399 #14??? 291?? 3900???????? NA????? 49392???????? NA???????? NA???????? NA A.K. ----- Original Message ----- From: Yao He <yao.h.1988 at gmail.com> To: R help <r-help at r-project.org> Cc: Sent: Wednesday, January 23, 2013 7:42 AM Subject: [R] how to read a df like that and transform it? Dear all I have a data.frame like that : father??? mother??? num_daughter??? daughter 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403 ??? ??? ??? ? ? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396 ??? ??? ??? ? ? ? ? 49397 ??? ??? ??? ? ? ? ? 49398 ??? ??? ??? ? ? ? ? 49399 291??? 3900??? 3??? 49392 How to read it into R and transform it like that: father mother??? num_daughter? daughter1? daughter2? daughter3 daughter4 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396? ? ? 49397? ? 49398? 49399 291??? 3900??? 3??? 49392 library (plyr) and library (reshape2) and other good packages are? OK for me. Thanks a lot! Yao He ????????????????????????? Master candidate in 2rd year Department of Animal genetics & breeding Room 436,College of Animial Science&Technology, China Agriculture University,Beijing,100193 E-mail: yao.h.1988 at gmail.com ?????????????????????????? ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Hi, If the `spaces` in "father", "mother", "num_daughter" columns needs to be replaced by the values in the previous row, ?dat1<-read.table(text=" father, mother, num_daughter, daughter 291, 3906, 0, 275, 4219, 0, 273, 4236, 1, 49410 281, 4163, 1, 49408 274, 4226, 1, 49406 295, 3869, 2, 49403 ?? , ,,??? 49404 287, 4113, 0 295, 3871, 1, 49401 292, 3895, 4, 49396 ?? ,,,??? 49397 ?? ,,,??? 49398 ?? ,,,??? 49399 291, 3900, 3, 49392 ",sep=",",header=T,fill=TRUE) library(zoo) ?dat2<-data.frame(na.locf(dat1[,1:3]),daughter=dat1[,4]) dat2Sub<-dat2[rep(which(dat2[,3]==3),2),1:3] ?dat2Sub$daughter<-NA dat3<-rbind(dat2,dat2Sub) dat3$num_daughter[dat3$num_daughter>1]<-ave(dat3$num_daughter[dat3$num_daughter>1],dat3$num_daughter[dat3$num_daughter>1],FUN=seq_along) reshape(dat3,v.names="daughter",idvar=c("father","mother"),timevar="num_daughter",direction="wide") ?#? father mother daughter.0 daughter.1 daughter.2 daughter.3 daughter.4 #1???? 291?? 3906???????? NA???????? NA???????? NA???????? NA???????? NA #2???? 275?? 4219???????? NA???????? NA???????? NA???????? NA???????? NA #3???? 273?? 4236???????? NA????? 49410???????? NA???????? NA???????? NA #4???? 281?? 4163???????? NA????? 49408???????? NA???????? NA???????? NA #5???? 274?? 4226???????? NA????? 49406???????? NA???????? NA???????? NA #6???? 295?? 3869???????? NA????? 49403????? 49404???????? NA???????? NA #8???? 287?? 4113???????? NA???????? NA???????? NA???????? NA???????? NA #9???? 295?? 3871???????? NA????? 49401???????? NA???????? NA???????? NA #10??? 292?? 3895???????? NA????? 49396????? 49397????? 49398????? 49399 #14??? 291?? 3900???????? NA????? 49392???????? NA???????? NA???????? NA A.K. ----- Original Message ----- From: Yao He <yao.h.1988 at gmail.com> To: R help <r-help at r-project.org> Cc: Sent: Wednesday, January 23, 2013 7:42 AM Subject: [R] how to read a df like that and transform it? Dear all I have a data.frame like that : father??? mother??? num_daughter??? daughter 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403 ??? ??? ??? ? ? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396 ??? ??? ??? ? ? ? ? 49397 ??? ??? ??? ? ? ? ? 49398 ??? ??? ??? ? ? ? ? 49399 291??? 3900??? 3??? 49392 How to read it into R and transform it like that: father mother??? num_daughter? daughter1? daughter2? daughter3 daughter4 291??? 3906??? 0??? NULL 275??? 4219??? 0??? NULL 273??? 4236??? 1??? 49410 281??? 4163??? 1??? 49408 274??? 4226??? 1??? 49406 295??? 3869??? 2??? 49403? ? ? 49404 287??? 4113??? 0??? NULL 295??? 3871??? 1??? 49401 292??? 3895??? 4??? 49396? ? ? 49397? ? 49398? 49399 291??? 3900??? 3??? 49392 library (plyr) and library (reshape2) and other good packages are? OK for me. Thanks a lot! Yao He ????????????????????????? Master candidate in 2rd year Department of Animal genetics & breeding Room 436,College of Animial Science&Technology, China Agriculture University,Beijing,100193 E-mail: yao.h.1988 at gmail.com ?????????????????????????? ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.