[R] how to read a df like that and transform it?
arun
smartpink111 at yahoo.com
Wed Jan 23 20:47:19 CET 2013
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.
More information about the R-help
mailing list