[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