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]]

