Hello all! I have a problem to arrange data in another form. My initial data is like this: 'data.frame': 421 obs. of 58 variables: $ 01A: num NA NA NA NA NA NA NA NA NA NA ... $ 01B: num NA NA NA NA NA NA NA NA NA NA ... $ 03A: num NA NA NA NA NA NA NA NA NA NA ... $ 03B: num NA NA NA NA NA NA NA NA NA NA ... $ 05A: num NA NA NA NA NA NA NA NA NA NA ... $ 05B: num NA NA NA NA NA NA NA 3.64 2.48 1.87 ... $ 07A: num NA NA NA NA NA NA NA NA NA NA ... $ 07B: num NA NA NA NA NA NA NA NA NA NA ... $ 10A: num NA NA NA NA NA NA NA NA NA NA ... $ 10B: num NA NA NA NA NA NA NA NA NA NA ... $ 12A: num NA NA NA NA NA NA NA NA NA NA ... $ 12B: num NA NA NA NA NA NA NA NA NA NA ... $ 14A: num NA NA NA NA NA NA NA NA NA NA ... $ 14B: num NA NA NA NA NA NA NA NA NA NA ... $ 16A: num NA NA NA NA NA NA NA NA NA NA ... $ 16B: num NA NA NA NA NA NA NA NA NA NA ... $ 17A: num NA NA NA NA NA NA NA NA NA NA ... $ 17B: num NA NA NA NA NA NA NA NA NA NA ... $ 20A: num NA NA NA NA NA NA NA NA NA NA ... $ 20B: num 0.85 0.77 0.62 0.86 0.97 0.6 0.33 0.58 0.54 0.88 ... $ 22A: num NA NA NA NA NA NA NA NA NA NA ... $ 22B: num NA NA NA NA NA NA NA NA NA NA ... $ 23A: num NA NA NA NA NA NA NA NA NA NA ... $ 23B: num NA NA NA NA NA NA NA NA NA NA ... $ 25A: num NA NA NA NA NA NA NA NA NA NA ... $ 25B: num NA NA NA NA NA NA NA NA NA NA ... $ 28A: num NA NA NA NA NA NA NA NA NA NA ... $ 28B: num NA NA NA NA NA NA NA NA NA NA ... $ 31A: num NA NA NA NA NA NA NA NA NA NA ... $ 31B: num NA NA NA NA NA NA NA NA NA NA ... $ 32A: num NA NA NA NA NA NA NA NA NA 1.19 ... $ 32B: num NA NA NA NA NA NA NA NA NA NA ... $ 34A: num NA NA NA NA NA NA NA NA NA NA ... $ 34B: num NA NA NA NA NA NA NA NA NA NA ... $ 36A: num NA NA NA NA NA NA NA NA NA NA ... $ 36B: num NA NA NA NA NA NA NA NA NA NA ... $ 42A: num NA NA NA NA NA NA NA NA NA NA ... $ 42B: num NA NA NA NA NA NA NA NA NA NA ... $ 44A: num NA NA NA NA NA NA NA NA NA NA ... $ 44B: num NA NA NA NA NA NA NA NA NA NA ... $ 47A: num NA NA NA NA NA NA NA NA NA NA ... $ 47B: num NA NA NA NA NA NA NA NA NA NA ... $ 48A: num NA NA NA NA NA NA NA NA NA NA ... $ 48B: num NA NA NA NA NA NA NA NA NA NA ... $ 50A: num NA NA NA NA NA NA NA NA NA NA ... $ 50B: num NA NA NA NA NA NA NA NA NA NA ... $ 52A: num NA NA NA NA NA NA NA NA NA NA ... $ 52B: num NA NA NA NA NA NA NA NA NA NA ... $ 55A: num NA NA NA NA NA NA NA NA NA NA ... $ 55B: num NA NA NA NA NA NA NA NA NA NA ... $ 56A: num NA NA NA NA NA NA NA NA NA NA ... $ 56B: num NA NA NA NA NA NA NA NA NA NA ... $ 59A: num NA NA NA NA NA NA NA NA NA NA ... $ 59B: num NA NA NA NA NA NA NA NA NA NA ... $ 40A: num NA NA NA NA 2.93 3.38 3.19 3.62 2.55 1.69 ... $ 40B: num NA NA NA NA NA NA NA NA NA NA ... $ 39A: num NA NA NA NA NA NA NA NA NA NA ... $ 39B: num NA NA NA NA NA NA NA NA NA NA ... I want to arrange them like this> row.names 01A 02A...... 1 first value first value 2 second value second value 3 4 .. max(nrow) Thank you very much! -- --- Catalin-Constantin ROIBU Lecturer PhD, Forestry engineer Forestry Faculty of Suceava Str. Universitatii no. 13, Suceava, 720229, Romania office phone +4 0230 52 29 78, ext. 531 mobile phone +4 0745 53 18 01 +4 0766 71 76 58 FAX: +4 0230 52 16 64 silvic.usv.ro [[alternative HTML version deleted]]
On Apr 6, 2013, at 7:28 AM, catalin roibu wrote:> Hello all! > I have a problem to arrange data in another form. My initial data is like > this: > 'data.frame': 421 obs. of 58 variables: > $ 01A: num NA NA NA NA NA NA NA NA NA NA ... > $ 01B: num NA NA NA NA NA NA NA NA NA NA ... > $ 03A: num NA NA NA NA NA NA NA NA NA NA ... > $ 03B: num NA NA NA NA NA NA NA NA NA NA ... > $ 05A: num NA NA NA NA NA NA NA NA NA NA ... > $ 05B: num NA NA NA NA NA NA NA 3.64 2.48 1.87 ... > $ 07A: num NA NA NA NA NA NA NA NA NA NA ... > $ 07B: num NA NA NA NA NA NA NA NA NA NA ... > $ 10A: num NA NA NA NA NA NA NA NA NA NA ... > $ 10B: num NA NA NA NA NA NA NA NA NA NA ... > $ 12A: num NA NA NA NA NA NA NA NA NA NA ... > $ 12B: num NA NA NA NA NA NA NA NA NA NA ... > $ 14A: num NA NA NA NA NA NA NA NA NA NA ... > $ 14B: num NA NA NA NA NA NA NA NA NA NA ... > $ 16A: num NA NA NA NA NA NA NA NA NA NA ... > $ 16B: num NA NA NA NA NA NA NA NA NA NA ... > $ 17A: num NA NA NA NA NA NA NA NA NA NA ... > $ 17B: num NA NA NA NA NA NA NA NA NA NA ... > $ 20A: num NA NA NA NA NA NA NA NA NA NA ... > $ 20B: num 0.85 0.77 0.62 0.86 0.97 0.6 0.33 0.58 0.54 0.88 ... > $ 22A: num NA NA NA NA NA NA NA NA NA NA ... > $ 22B: num NA NA NA NA NA NA NA NA NA NA ... > $ 23A: num NA NA NA NA NA NA NA NA NA NA ... > $ 23B: num NA NA NA NA NA NA NA NA NA NA ... > $ 25A: num NA NA NA NA NA NA NA NA NA NA ... > $ 25B: num NA NA NA NA NA NA NA NA NA NA ... > $ 28A: num NA NA NA NA NA NA NA NA NA NA ... > $ 28B: num NA NA NA NA NA NA NA NA NA NA ... > $ 31A: num NA NA NA NA NA NA NA NA NA NA ... > $ 31B: num NA NA NA NA NA NA NA NA NA NA ... > $ 32A: num NA NA NA NA NA NA NA NA NA 1.19 ... > $ 32B: num NA NA NA NA NA NA NA NA NA NA ... > $ 34A: num NA NA NA NA NA NA NA NA NA NA ... > $ 34B: num NA NA NA NA NA NA NA NA NA NA ... > $ 36A: num NA NA NA NA NA NA NA NA NA NA ... > $ 36B: num NA NA NA NA NA NA NA NA NA NA ... > $ 42A: num NA NA NA NA NA NA NA NA NA NA ... > $ 42B: num NA NA NA NA NA NA NA NA NA NA ... > $ 44A: num NA NA NA NA NA NA NA NA NA NA ... > $ 44B: num NA NA NA NA NA NA NA NA NA NA ... > $ 47A: num NA NA NA NA NA NA NA NA NA NA ... > $ 47B: num NA NA NA NA NA NA NA NA NA NA ... > $ 48A: num NA NA NA NA NA NA NA NA NA NA ... > $ 48B: num NA NA NA NA NA NA NA NA NA NA ... > $ 50A: num NA NA NA NA NA NA NA NA NA NA ... > $ 50B: num NA NA NA NA NA NA NA NA NA NA ... > $ 52A: num NA NA NA NA NA NA NA NA NA NA ... > $ 52B: num NA NA NA NA NA NA NA NA NA NA ... > $ 55A: num NA NA NA NA NA NA NA NA NA NA ... > $ 55B: num NA NA NA NA NA NA NA NA NA NA ... > $ 56A: num NA NA NA NA NA NA NA NA NA NA ... > $ 56B: num NA NA NA NA NA NA NA NA NA NA ... > $ 59A: num NA NA NA NA NA NA NA NA NA NA ... > $ 59B: num NA NA NA NA NA NA NA NA NA NA ... > $ 40A: num NA NA NA NA 2.93 3.38 3.19 3.62 2.55 1.69 ... > $ 40B: num NA NA NA NA NA NA NA NA NA NA ... > $ 39A: num NA NA NA NA NA NA NA NA NA NA ... > $ 39B: num NA NA NA NA NA NA NA NA NA NA ... > I want to arrange them like this> > row.names 01A 02A...... > 1 first value first value > 2 second value second value > 3 > 4 > .. > max(nrow)I don't think the question is clear, but perhaps you just wnat to transpose this dataframe? If that is the goal, then look at: ?t> [[alternative HTML version deleted]] (By the mail-list software) >-- David Winsemius Alameda, CA, USA
If you want to reorder the column names of your data frame, try (it would have been nice if you provided a subset of your data with 'dput'): # create the order of the new columns indx <- order(substring(colnnames(df), 3, 3) , substring(colnames(df), 1, 2) ) df <- df[, indx] On Sat, Apr 6, 2013 at 10:28 AM, catalin roibu <catalinroibu@gmail.com>wrote:> Hello all! > I have a problem to arrange data in another form. My initial data is like > this: > 'data.frame': 421 obs. of 58 variables: > $ 01A: num NA NA NA NA NA NA NA NA NA NA ... > $ 01B: num NA NA NA NA NA NA NA NA NA NA ... > $ 03A: num NA NA NA NA NA NA NA NA NA NA ... > $ 03B: num NA NA NA NA NA NA NA NA NA NA ... > $ 05A: num NA NA NA NA NA NA NA NA NA NA ... > $ 05B: num NA NA NA NA NA NA NA 3.64 2.48 1.87 ... > $ 07A: num NA NA NA NA NA NA NA NA NA NA ... > $ 07B: num NA NA NA NA NA NA NA NA NA NA ... > $ 10A: num NA NA NA NA NA NA NA NA NA NA ... > $ 10B: num NA NA NA NA NA NA NA NA NA NA ... > $ 12A: num NA NA NA NA NA NA NA NA NA NA ... > $ 12B: num NA NA NA NA NA NA NA NA NA NA ... > $ 14A: num NA NA NA NA NA NA NA NA NA NA ... > $ 14B: num NA NA NA NA NA NA NA NA NA NA ... > $ 16A: num NA NA NA NA NA NA NA NA NA NA ... > $ 16B: num NA NA NA NA NA NA NA NA NA NA ... > $ 17A: num NA NA NA NA NA NA NA NA NA NA ... > $ 17B: num NA NA NA NA NA NA NA NA NA NA ... > $ 20A: num NA NA NA NA NA NA NA NA NA NA ... > $ 20B: num 0.85 0.77 0.62 0.86 0.97 0.6 0.33 0.58 0.54 0.88 ... > $ 22A: num NA NA NA NA NA NA NA NA NA NA ... > $ 22B: num NA NA NA NA NA NA NA NA NA NA ... > $ 23A: num NA NA NA NA NA NA NA NA NA NA ... > $ 23B: num NA NA NA NA NA NA NA NA NA NA ... > $ 25A: num NA NA NA NA NA NA NA NA NA NA ... > $ 25B: num NA NA NA NA NA NA NA NA NA NA ... > $ 28A: num NA NA NA NA NA NA NA NA NA NA ... > $ 28B: num NA NA NA NA NA NA NA NA NA NA ... > $ 31A: num NA NA NA NA NA NA NA NA NA NA ... > $ 31B: num NA NA NA NA NA NA NA NA NA NA ... > $ 32A: num NA NA NA NA NA NA NA NA NA 1.19 ... > $ 32B: num NA NA NA NA NA NA NA NA NA NA ... > $ 34A: num NA NA NA NA NA NA NA NA NA NA ... > $ 34B: num NA NA NA NA NA NA NA NA NA NA ... > $ 36A: num NA NA NA NA NA NA NA NA NA NA ... > $ 36B: num NA NA NA NA NA NA NA NA NA NA ... > $ 42A: num NA NA NA NA NA NA NA NA NA NA ... > $ 42B: num NA NA NA NA NA NA NA NA NA NA ... > $ 44A: num NA NA NA NA NA NA NA NA NA NA ... > $ 44B: num NA NA NA NA NA NA NA NA NA NA ... > $ 47A: num NA NA NA NA NA NA NA NA NA NA ... > $ 47B: num NA NA NA NA NA NA NA NA NA NA ... > $ 48A: num NA NA NA NA NA NA NA NA NA NA ... > $ 48B: num NA NA NA NA NA NA NA NA NA NA ... > $ 50A: num NA NA NA NA NA NA NA NA NA NA ... > $ 50B: num NA NA NA NA NA NA NA NA NA NA ... > $ 52A: num NA NA NA NA NA NA NA NA NA NA ... > $ 52B: num NA NA NA NA NA NA NA NA NA NA ... > $ 55A: num NA NA NA NA NA NA NA NA NA NA ... > $ 55B: num NA NA NA NA NA NA NA NA NA NA ... > $ 56A: num NA NA NA NA NA NA NA NA NA NA ... > $ 56B: num NA NA NA NA NA NA NA NA NA NA ... > $ 59A: num NA NA NA NA NA NA NA NA NA NA ... > $ 59B: num NA NA NA NA NA NA NA NA NA NA ... > $ 40A: num NA NA NA NA 2.93 3.38 3.19 3.62 2.55 1.69 ... > $ 40B: num NA NA NA NA NA NA NA NA NA NA ... > $ 39A: num NA NA NA NA NA NA NA NA NA NA ... > $ 39B: num NA NA NA NA NA NA NA NA NA NA ... > I want to arrange them like this> > row.names 01A 02A...... > 1 first value first value > 2 second value second value > 3 > 4 > .. > max(nrow) > > Thank you very much! > > -- > --- > Catalin-Constantin ROIBU > Lecturer PhD, Forestry engineer > Forestry Faculty of Suceava > Str. Universitatii no. 13, Suceava, 720229, Romania > office phone +4 0230 52 29 78, ext. 531 > mobile phone +4 0745 53 18 01 > +4 0766 71 76 58 > FAX: +4 0230 52 16 64 > silvic.usv.ro > > [[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. >-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. [[alternative HTML version deleted]]
Hi, Try this: #dat1 is dataset indx<-apply(dat1,2,function(x) head(which(!is.na(x)),2)) res<-as.data.frame(sapply(seq_len(ncol(indx)),function(i) dat2[indx[,i],i])) ?colnames(res)<- colnames(dat1) ?res #???? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B? C35A #1 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 1.722 #2 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 1.102 ?#? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B #1 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 #2 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 #or just ?res2<-sapply(dat1,function(x) head(x[!is.na(x)],2)) res2 #??????? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B #[1,] 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 #[2,] 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 ?# ??? C35A? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B #[1,] 1.722 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 #[2,] 1.102 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 A.K. ----- Original Message ----- From: catalin roibu <catalinroibu at gmail.com> To: r-help at r-project.org Cc: Sent: Saturday, April 6, 2013 10:28 AM Subject: [R] arrange data Hello all! I have a problem to arrange data in another form. My initial data is like this: 'data.frame': 421 obs. of? 58 variables: $ 01A: num? NA NA NA NA NA NA NA NA NA NA ... $ 01B: num? NA NA NA NA NA NA NA NA NA NA ... $ 03A: num? NA NA NA NA NA NA NA NA NA NA ... $ 03B: num? NA NA NA NA NA NA NA NA NA NA ... $ 05A: num? NA NA NA NA NA NA NA NA NA NA ... $ 05B: num? NA NA NA NA NA NA NA 3.64 2.48 1.87 ... $ 07A: num? NA NA NA NA NA NA NA NA NA NA ... $ 07B: num? NA NA NA NA NA NA NA NA NA NA ... $ 10A: num? NA NA NA NA NA NA NA NA NA NA ... $ 10B: num? NA NA NA NA NA NA NA NA NA NA ... $ 12A: num? NA NA NA NA NA NA NA NA NA NA ... $ 12B: num? NA NA NA NA NA NA NA NA NA NA ... $ 14A: num? NA NA NA NA NA NA NA NA NA NA ... $ 14B: num? NA NA NA NA NA NA NA NA NA NA ... $ 16A: num? NA NA NA NA NA NA NA NA NA NA ... $ 16B: num? NA NA NA NA NA NA NA NA NA NA ... $ 17A: num? NA NA NA NA NA NA NA NA NA NA ... $ 17B: num? NA NA NA NA NA NA NA NA NA NA ... $ 20A: num? NA NA NA NA NA NA NA NA NA NA ... $ 20B: num? 0.85 0.77 0.62 0.86 0.97 0.6 0.33 0.58 0.54 0.88 ... $ 22A: num? NA NA NA NA NA NA NA NA NA NA ... $ 22B: num? NA NA NA NA NA NA NA NA NA NA ... $ 23A: num? NA NA NA NA NA NA NA NA NA NA ... $ 23B: num? NA NA NA NA NA NA NA NA NA NA ... $ 25A: num? NA NA NA NA NA NA NA NA NA NA ... $ 25B: num? NA NA NA NA NA NA NA NA NA NA ... $ 28A: num? NA NA NA NA NA NA NA NA NA NA ... $ 28B: num? NA NA NA NA NA NA NA NA NA NA ... $ 31A: num? NA NA NA NA NA NA NA NA NA NA ... $ 31B: num? NA NA NA NA NA NA NA NA NA NA ... $ 32A: num? NA NA NA NA NA NA NA NA NA 1.19 ... $ 32B: num? NA NA NA NA NA NA NA NA NA NA ... $ 34A: num? NA NA NA NA NA NA NA NA NA NA ... $ 34B: num? NA NA NA NA NA NA NA NA NA NA ... $ 36A: num? NA NA NA NA NA NA NA NA NA NA ... $ 36B: num? NA NA NA NA NA NA NA NA NA NA ... $ 42A: num? NA NA NA NA NA NA NA NA NA NA ... $ 42B: num? NA NA NA NA NA NA NA NA NA NA ... $ 44A: num? NA NA NA NA NA NA NA NA NA NA ... $ 44B: num? NA NA NA NA NA NA NA NA NA NA ... $ 47A: num? NA NA NA NA NA NA NA NA NA NA ... $ 47B: num? NA NA NA NA NA NA NA NA NA NA ... $ 48A: num? NA NA NA NA NA NA NA NA NA NA ... $ 48B: num? NA NA NA NA NA NA NA NA NA NA ... $ 50A: num? NA NA NA NA NA NA NA NA NA NA ... $ 50B: num? NA NA NA NA NA NA NA NA NA NA ... $ 52A: num? NA NA NA NA NA NA NA NA NA NA ... $ 52B: num? NA NA NA NA NA NA NA NA NA NA ... $ 55A: num? NA NA NA NA NA NA NA NA NA NA ... $ 55B: num? NA NA NA NA NA NA NA NA NA NA ... $ 56A: num? NA NA NA NA NA NA NA NA NA NA ... $ 56B: num? NA NA NA NA NA NA NA NA NA NA ... $ 59A: num? NA NA NA NA NA NA NA NA NA NA ... $ 59B: num? NA NA NA NA NA NA NA NA NA NA ... $ 40A: num? NA NA NA NA 2.93 3.38 3.19 3.62 2.55 1.69 ... $ 40B: num? NA NA NA NA NA NA NA NA NA NA ... $ 39A: num? NA NA NA NA NA NA NA NA NA NA ... $ 39B: num? NA NA NA NA NA NA NA NA NA NA ... I want to arrange them like this> row.names 01A 02A...... 1? ? ? ? ? ? ? first value first value 2? ? ? ? ? ? ? second value second value 3 4 .. max(nrow) Thank you very much! -- --- Catalin-Constantin ROIBU Lecturer PhD, Forestry engineer Forestry Faculty of Suceava Str. Universitatii no. 13, Suceava, 720229, Romania office phone? ? +4 0230 52 29 78, ext. 531 mobile phone? +4 0745 53 18 01 ? ? ? ? ? ? ? ? ? ? ? +4 0766 71 76 58 FAX:? ? ? ? ? ? ? ? +4 0230 52 16 64 silvic.usv.ro ??? [[alternative HTML version deleted]] ______________________________________________ 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.
?lst1<-lapply(dat1,function(x) x[!is.na(x)]) ?res<-as.data.frame(sapply(lst1,function(x) c(x,rep(NA,max(sapply(lst1,length))-length(x)) ))) ?head(res) #???? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B? C35A #1 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 1.722 #2 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 1.102 #3 4.012 2.878 1.126 3.236 1.431 2.635 2.952 2.483 0.679 0.484 0.704 0.461 1.400 #4 3.611 2.094 1.043 3.032 1.835 3.019 1.590 2.269 0.901 0.576 1.008 0.879 2.222 #5 2.970 1.371 1.486 1.817 1.884 2.557 1.768 1.463 0.466 0.378 0.708 0.862 1.840 #6 4.687 1.042 1.252 3.495 2.540 2.592 1.179 1.860 0.608 0.314 0.721 0.624 1.927 #?? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B #1 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 #2 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 #3 1.350 0.999 0.992 1.629 1.551 1.996 2.444 1.261 1.343 0.790 #4 1.952 1.227 1.447 1.067 2.252 2.220 1.635 1.085 1.367 0.633 #5 2.343 1.049 1.285 1.299 1.182 2.976 2.106 1.388 2.253 0.630 #6 2.104 1.771 1.204 1.540 1.203 2.847 2.200 2.563 2.348 0.493 nrow(res) #[1] 140 If you wanted to have the same number of rows as dat1: nrow(dat1) #[1] 145 new1<-as.data.frame(matrix(NA,ncol=23,nrow=5)) ?colnames(new1)<- colnames(res) ?res1<- rbind(res,new1) ?nrow(res1) #[1] 145 A.K. ________________________________ From: catalin roibu <catalinroibu at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Saturday, April 6, 2013 12:52 PM Subject: Re: [R] arrange data it is ok, but I want for all rows not only for 2, like in my example. Thank you very much! On 6 April 2013 19:47, arun <smartpink111 at yahoo.com> wrote:> >Hi, >Try this: >#dat1 is dataset >indx<-apply(dat1,2,function(x) head(which(!is.na(x)),2)) >res<-as.data.frame(sapply(seq_len(ncol(indx)),function(i) dat2[indx[,i],i])) >?colnames(res)<- colnames(dat1) >?res >#???? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B? C35A >#1 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 1.722 >#2 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 1.102 >?#? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B >#1 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 >#2 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 > > >#or just >?res2<-sapply(dat1,function(x) head(x[!is.na(x)],2)) >res2 >#??????? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B >#[1,] 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 >#[2,] 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 >?# ??? C35A? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B >#[1,] 1.722 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 >#[2,] 1.102 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 > > >A.K. > > >----- Original Message ----- > >From: catalin roibu <catalinroibu at gmail.com> >To: r-help at r-project.org >Cc: >Sent: Saturday, April 6, 2013 10:28 AM >Subject: [R] arrange data > > >Hello all! >I have a problem to arrange data in another form. My initial data is like >this: >'data.frame': 421 obs. of? 58 variables: >$ 01A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 01B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 03A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 03B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 05A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 05B: num? NA NA NA NA NA NA NA 3.64 2.48 1.87 ... >$ 07A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 07B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 10A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 10B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 12A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 12B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 14A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 14B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 16A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 16B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 17A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 17B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 20A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 20B: num? 0.85 0.77 0.62 0.86 0.97 0.6 0.33 0.58 0.54 0.88 ... >$ 22A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 22B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 23A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 23B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 25A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 25B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 28A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 28B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 31A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 31B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 32A: num? NA NA NA NA NA NA NA NA NA 1.19 ... >$ 32B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 34A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 34B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 36A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 36B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 42A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 42B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 44A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 44B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 47A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 47B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 48A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 48B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 50A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 50B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 52A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 52B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 55A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 55B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 56A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 56B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 59A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 59B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 40A: num? NA NA NA NA 2.93 3.38 3.19 3.62 2.55 1.69 ... >$ 40B: num? NA NA NA NA NA NA NA NA NA NA ... >$ 39A: num? NA NA NA NA NA NA NA NA NA NA ... >$ 39B: num? NA NA NA NA NA NA NA NA NA NA ... >I want to arrange them like this> >row.names 01A 02A...... >1? ? ? ? ? ? ? first value first value >2? ? ? ? ? ? ? second value second value >3 >4 >.. >max(nrow) > >Thank you very much! > >-- >--- >Catalin-Constantin ROIBU >Lecturer PhD, Forestry engineer >Forestry Faculty of Suceava >Str. Universitatii no. 13, Suceava, 720229, Romania >office phone? ? ?+4 0230 52 29 78, ext. 531 >mobile phone? ?+4 0745 53 18 01 >? ? ? ? ? ? ? ? ? ? ? ?+4 0766 71 76 58 >FAX:? ? ? ? ? ? ? ? +4 0230 52 16 64 >silvic.usv.ro > > >??? [[alternative HTML version deleted]] > >______________________________________________ >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. > >-- --- Catalin-Constantin ROIBU Lecturer PhD,?Forestry engineer Forestry Faculty of Suceava Str. Universitatii no. 13, Suceava, 720229, Romania office phone ??? +4 0230 52 29 78, ext. 531 mobile phone ? +4 0745 53 18 01 ?????????????????????? +4 0766 71 76 58 FAX: ??? ??? ?????? +4 0230 52 16 64 silvic.usv.ro
Hi, You could also do this with: dat2<- dat1 ?dat2[]<-lapply(dat1,function(x) c(x[!is.na(x)],x[is.na(x)])) row.names(res1)<- row.names(dat2) ?identical(dat2,res1) #[1] TRUE For your new question: test<- data.frame(medrw1) ?row.names(test) ? [1] "1"?? "2"?? "3"?? "4"?? "5"?? "6"?? "7"?? "8"?? "9"?? "10"? "11"? "12" ?[13] "13"? "14"? "15"? "16"? "17"? "18"? "19"? "20"? "21"? "22"? "23"? "24" ?[25] "25"? "26"? "27"? "28"? "29"? "30"? "31"? "32"? "33"? "34"? "35"? "36" ?[37] "37"? "38"? "39"? "40"? "41"? "42"? "43"? "44"? "45"? "46"? "47"? "48" ?[49] "49"? "50"? "51"? "52"? "53"? "54"? "55"? "56"? "57"? "58"? "59"? "60" ?[61] "61"? "62"? "63"? "64"? "65"? "66"? "67"? "68"? "69"? "70"? "71"? "72" ?[73] "73"? "74"? "75"? "76"? "77"? "78"? "79"? "80"? "81"? "82"? "83"? "84" ?[85] "85"? "86"? "87"? "88"? "89"? "90"? "91"? "92"? "93"? "94"? "95"? "96" ?[97] "97"? "98"? "99"? "100" "101" "102" "103" "104" "105" "106" "107" "108" [109] "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" [121] "121" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132" [133] "133" "134" "135" "136" "137" "138" "139" "140" ?test$newCol<- row.names(test) ?test1<-test[,c(2:1)] ?head(test1) #? newCol medrw1 #1????? 1? 1.499 #2????? 2? 1.209 #3????? 3? 1.400 #4????? 4? 1.590 #5????? 5? 1.463 #6????? 6? 1.771 A.K. ________________________________ From: catalin roibu <catalinroibu at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Saturday, April 6, 2013 2:27 PM Subject: Re: [R] arrange data It is not for this case. I want to create a growth mean by row and compare with another serie mean. medrw1 <- apply(res,1,median,na.rm=TRUE) test<-cbind(medrw1)? in this case I want to create a new column at first position?which contain this seq().??This column I want to set as row.names. Thank you very much! On 6 April 2013 21:24, arun <smartpink111 at yahoo.com> wrote:> > >________________________________ >From: catalin roibu <catalinroibu at gmail.com> >To: arun <smartpink111 at yahoo.com> >Sent: Saturday, April 6, 2013 1:43 PM >Subject: Re: [R] arrange data > > >I want a column with seq(1,nrow(res),by=1) and set this column as row.names. > > >Thank you very much! > > > >On 6 April 2013 20:41, arun <smartpink111 at yahoo.com> wrote: > > >>>________________________________ >>?From: catalin roibu <catalinroibu at gmail.com> >>To: arun <smartpink111 at yahoo.com> >>Sent: Saturday, April 6, 2013 1:20 PM >> >>Subject: Re: [R] arrange data >> >> >>It is perfect! Thank you very much! A last question if you don't mind. How can add in the first position a new column ( from 1 to max row?length) ?which I use as rowname?? >> >> >> >>> >>>On 6 April 2013 20:06, arun <smartpink111 at yahoo.com> wrote: >>> >>> >>>> >>>> >>>>?lst1<-lapply(dat1,function(x) x[!is.na(x)]) >>>>?res<-as.data.frame(sapply(lst1,function(x) c(x,rep(NA,max(sapply(lst1,length))-length(x)) ))) >>>>?head(res) >>>> >>>>#???? 1B??? 2B??? 4B??? 1A??? 2A??? 4A??? 5B??? 5A? C31A? C31B? C34A? C34B? C35A >>>>#1 2.518 2.357 1.499 3.647 1.890 2.249 2.896 2.175 0.452 1.177 0.344 0.612 1.722 >>>>#2 2.796 2.759 1.032 3.763 1.182 2.291 2.417 2.597 1.033 0.831 0.351 0.509 1.102 >>>>#3 4.012 2.878 1.126 3.236 1.431 2.635 2.952 2.483 0.679 0.484 0.704 0.461 1.400 >>>>#4 3.611 2.094 1.043 3.032 1.835 3.019 1.590 2.269 0.901 0.576 1.008 0.879 2.222 >>>>#5 2.970 1.371 1.486 1.817 1.884 2.557 1.768 1.463 0.466 0.378 0.708 0.862 1.840 >>>>#6 4.687 1.042 1.252 3.495 2.540 2.592 1.179 1.860 0.608 0.314 0.721 0.624 1.927 >>>> >>>>#?? C35B? C37A? C37B? C36A? C36B? C32A? C32B? C33A? C33B? C39B >>>>#1 2.482 0.996 0.898 0.179 1.148 2.637 2.917 1.440 1.487 1.291 >>>>#2 1.061 1.243 1.078 1.167 1.209 2.770 2.325 2.006 1.886 0.655 >>>>#3 1.350 0.999 0.992 1.629 1.551 1.996 2.444 1.261 1.343 0.790 >>>>#4 1.952 1.227 1.447 1.067 2.252 2.220 1.635 1.085 1.367 0.633 >>>>#5 2.343 1.049 1.285 1.299 1.182 2.976 2.106 1.388 2.253 0.630 >>>>#6 2.104 1.771 1.204 1.540 1.203 2.847 2.200 2.563 2.348 0.493 >>>>nrow(res) >>>>#[1] 140 >>>>If you wanted to have the same number of rows as dat1: >>>>nrow(dat1) >>>>#[1] 145 >>>>new1<-as.data.frame(matrix(NA,ncol=23,nrow=5)) >>>>?colnames(new1)<- colnames(res) >>>>?res1<- rbind(res,new1) >>>>?nrow(res1) >>>>#[1] 145 >>>> >>>> >>>> >>>>A.K. >>>> >>>> >>>> >> >