Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 1st, 2012  |  syntax: None  |  size: 1.17 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Using do loops in R to create new variables
  2. %do i=1 %to 100;
  3. c_&i = a_&i + b_&i;
  4. %end;
  5.        
  6. > a = 1:100
  7. > b = runif(100)
  8.        
  9. > a[1]
  10.        
  11. > c = a + b
  12.        
  13. > c = rep(0,100)
  14. > for(i in 1:100){
  15.    c[i]=a[i]+b[i]
  16.    }
  17.        
  18. c_1 = a_1 + b_1
  19.        
  20. for(i in 1:100){
  21.     tmpCmd = paste("C_",i,"= A_",i, sep = "")
  22.     eval(parse(text = tmpCmd))
  23. }
  24. rm(i, tmpCmd)
  25.        
  26. tmpCmd = paste("C_",i,"= A_",i," + B_",i, sep = "")
  27.        
  28. %macro recodevars;
  29. data test;
  30.   set test;
  31.  
  32.   %do i=1 %to 100;
  33.   c_&i = a_&i + b_&i;
  34.   %end;
  35.  
  36. run;
  37. %mend recodevars;
  38. %recodevars;
  39.        
  40. test <- data.frame(vara1=1:10,varb1=2:11,vara2=3:12,varb2=4:13)
  41.  
  42. for (i in 1:2) {
  43.  
  44. test[paste("varc",i,sep="")] <- test[paste("vara",i,sep="")] + test[paste("varb",i,sep="")]
  45.  
  46. }
  47.        
  48. > a_1 = 1
  49. > a_2 = 2
  50. > a_3 = 3
  51. > a_4 = 4
  52. > a_5 = 5
  53.  
  54. > b_1 = 1
  55. > b_2 = 2
  56. > b_3 = 3
  57. > b_4 = 4
  58. > b_5 = 5
  59.  
  60. > a.list <- ls(patter='a_*')
  61. > a.list
  62. [1] "a_1" "a_2" "a_3" "a_4" "a_5"
  63.        
  64. if(length(a.list)==length(b.list)){
  65.    c.list <- lapply(1:length(a.list), function(x) eval(parse(text=a.list[x])) + eval(parse(text=b.list[x])))
  66.  
  67.    c.list.names <- paste('c', 1:length(a.list), sep='_')
  68.  
  69.    lapply(1:length(c.list), function(x) assign(c.list.names[x], c.list[x], envir=.GlobalEnv))
  70. }