[R] arrange data

arun smartpink111 at yahoo.com
Sat Apr 6 19:06:44 CEST 2013




 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



More information about the R-help mailing list