[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