[R] arrange data

arun smartpink111 at yahoo.com
Sat Apr 6 18:47:34 CEST 2013



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.




More information about the R-help mailing list