Yes!It works well and really what I want! Many thanks for your help! Merry Christmas.
At 2012-12-24 22:15:36,arun <smartpink...@yahoo.com> wrote: >Hi, >How about this? > >set.seed(5) >dat<-data.frame(x=sample(1:20,6,replace=TRUE),a=sample(20:40,6,replace=TRUE)) > dat1<-within(dat,{f=a/median(a);x_new=x*f}) > dat1 ># x a x_new f >#1 5 31 5.081967 1.0163934 >#2 14 36 16.524590 1.1803279 >#3 19 40 24.918033 1.3114754 >#4 6 22 4.327869 0.7213115 >#5 3 25 2.459016 0.8196721 >#6 15 30 14.754098 0.9836066 > >#or > res<-do.call(data.frame,lapply(lapply(1,function(y) dat),function(y) > {y$f<-y$a/median(y$a);y$x_new<-y$f*y$x;y})) >A.K. > > > > > > >________________________________ >From: meng <laomen...@163.com> >To: arun <smartpink...@yahoo.com> >Cc: R help <r-help@r-project.org> >Sent: Monday, December 24, 2012 5:29 AM >Subject: Re:Re: [R] How to do it through 1 step? > > >Yes,this is my final solution,but if I wanna add many new variables,and maybe >the following "new variables" are computed based on the previous " new >variables", this solution maybe difficult. > > > > > > > > >At 2012-12-24 17:01:03,arun <smartpink...@yahoo.com> wrote: >>HI, >> >>Not sure if this works for you. >>set.seed(5) >>dat<-data.frame(x=sample(1:20,6,replace=TRUE),a=sample(20:40,6,replace=TRUE)) >> dat1<-transform(dat,f=a/median(a),x_new=x*(a/median(a))) >> head(dat1,2) >># x a f x_new >>#1 5 31 1.016393 5.081967 >>#2 14 36 1.180328 16.524590 >>A.K. >> >> >> >> >>----- Original Message ----- >>From: meng <laomen...@163.com> >>To: r-help@r-project.org >>Cc: >>Sent: Monday, December 24, 2012 12:55 AM >>Subject: [R] How to do it through 1 step? >> >>A data set(dat),has 2 variables: x and a, and 100 rows. >> >>I wanna add 2 variables,and call the new data set dat1: >>var1:f = a/median(a) >>var2:x_new = x*f >> >>My solution: >>dat1<-transform(dat,f = a/median(a),x_new = x*f) >>But gets error reply which says that "f" is not exits since dat has no >>variables called "f". >> >>So I have to do through 2 steps: >>dat0<-transform(dat,f=a/median(a)) >>dat1<-transform(dat0,x_new=x*f) >> >>How to do it through 1 step? >> >>Many thanks! >> >> >> [[alternative HTML version deleted]] >> >>______________________________________________ >>R-help@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. >> [[alternative HTML version deleted]] ______________________________________________ R-help@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.