Re: [R] how to create a vector with different categories in a simple way?

From: Petr Pikal <petr.pikal_at_precheza.cz>
Date: Tue 24 Oct 2006 - 06:56:00 GMT

Hi

If you just want a specific sequences added to your data and you have your data ordered as shown why not to use simply

blockrow <- rep(1:12, each=64)
blockcol <- rep(rep(1:4, each=16), 12)

HTH
Petr

On 23 Oct 2006 at 23:51, Jenny persson wrote:

Date sent:      	Mon, 23 Oct 2006 23:51:02 +0200 (CEST)
From:           	Jenny persson <jenny197806@yahoo.se>
To:             	r-help@stat.math.ethz.ch
Subject:        	Re: [R] how to create a vector with different categories in a
	simple way?

> Thank you so much, Marc and Phil. Unfortunenately, I misunderstood the
> problem myself and wasn't clear how i wanted the variables to be. I
> will describe the issue again and hope you can help me out.
>
> Here is part of data called layout
>
> Id Name block col row
> 1 a 1 1 1
> 2 b 1 2 1
> 3 c 1 3 1
> 4 a 1 4 1
> 5 b 1 1 2
> 6 c 1 2 2
> 7 b 1 3 2
> 8 c 1 4 2
> 9 d 1 1 3
> 10 e 1 2 3
> 11 a 1 3 3
> 12 d 1 4 3
> 13 e 1 1 4
> 14 a 1 2 4
> 15 d 1 3 4
> 16 c 1 4 4
> 17 d 2 1 1
> 18 c 2 2 1
> 19 e 2 3 1
> 20 d 2 4 1
> 21 b 2 1 2
> 22 e 2 2 2
> 23 f 2 3 2
> 24 d 2 4 2
>
> 32 a 2 4 4 and so on
> . . . . .
> . . . . .
> . . . . .
> 768 f 48 4 4
>
> As you can see for each row there are 4 columns. the total
> observations in each block is 16. My real data contains 48 blocks
> which give totally 768 observations. The blocks ranged from 1-48
> are displayed four and four after each other like below. Note there
> are 4 rows and 4 columns in each block.
> 1 2 3 4
> > 5 6 7 8
> > 9 10 11 12
> > 13 14 15 16
> > 17 18 19 20
> > 21 22 23 24
> > 25 26 27 28
> > 29 30 31 32
> > 33 34 35 36
> > 37 38 39 40
> > 41 42 43 44
> > 45 46 47 48
>
> What I want is to create two variables called blockrow respective
> blockcol in such a way that blockrow
> > will have value 1 for block 1,2 3 and 4, blockrow=2 for blocks 5,6,7
> > and 8 and so on. Similarly, blockcol = 1 for blocks 1,5
> > ,9,13,17,21,25,29,33,37,41 and 44 and so on. As you can see there
> > are 12 blockrows and 4 blockcols. The data should look like
>
> Id Name block col row blockrow blockcol
> 1 a 1 1 1 1 1
> 2 b 1 2 1 1 1
> 3 c 1 3 1 1 1
> 4 a 1 4 1 1 1
> 5 b 1 1 2 1 1
> 6 c 1 2 2 1 1
> 7 b 1 3 2 1 1
> 8 c 1 4 2 1 1
> 9 d 1 1 3 1 1
> 10 e 1 2 3 1 1
> 11 a 1 3 3 1 1
> 12 d 1 4 3 1 1
> 13 e 1 1 4 1 1
> 14 a 1 2 4 1 1
> 15 d 1 3 4 1 1
> 16 c 1 4 4 1 1
> 17 d 2 1 1 1 2
> 18 c 2 2 1 1 2
> 19 e 2 3 1 1 2
> 20 d 2 4 1 1 2
> 21 b 2 1 2 1 2
> 22 e 2 2 2 1 2
> 23 f 2 3 2 1 2
> 24 d 2 4 2 1 2
>
> 32 a 2 4 4 and so on
> . . . . .
> . . . . .
> . . . . .
> 768 f 48 4 4 12 4
>
>
> I have an algorithm
>
> blockrow <-1
> if(layout$block <= 4)
> blockrow <-1
> if(5<=layout$block <= 8)
> blockrow <-2
>
> if(9<=layout$block <= 12)
> blockrow <-3 and so on
>
> Can I do a for loop like :
>
> #---------- Append some more columns to matrix
> layout----------------------
>
> blockrow<-rep(0,nrow(layout))
> blockcol<-rep(0,nrow(layout))
>
>
>
> for (a in 1:12){
> if(4*a+1<=layout$block<=(a+1)*4)
> blockrow<-(a+1)
> }
>
> Similarly,
>
> blockcol<-1
>
> if(layout$block = 5,9,13,17,21,25,29,33,37,41,45)
> blockcol<-1
>
> if(layout$block = 2,6,10,14,18,22,26,30,34,38,42,46)
> blockcol<-2 and so on
> which give the for loop
>
>
>
> blockcol<-1
> for (a in 1:12){
> if(layout$block==(4*a+1))
> blockrow<-1
> }
>
>
> or how can i do it in R so I get blockrow and blockcol as i want ?
>
> Thanks again for your help,
> Best regards,
> Yen
>
>
>
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch 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.

Petr Pikal
petr.pikal@precheza.cz



R-help@stat.math.ethz.ch 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. Received on Tue Oct 24 19:51:08 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 24 Oct 2006 - 10:30:14 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.