Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • the same command for more than 100 variables

    Dear Statalist,
    I have 768 variables for right eye and the corresponding same 768 variables for left eye. I want to create a new variable based on the best result comparing right and left eye.
    For example, I have: 1OD, 1OS, 2OD, 2OS, 3OD, 3OS etc... 768OD, 768OS.

    I usually do this when I have just one variable:
    generate best1 = 1OD if 1OD > 1OS
    replace best1 = 1OS if best1==.
    However I have do to this for 768 variables. The name of the variables are exactly the same, but there is OD or OS in the beginning of these 768 variables.
    Do you have any suggestions?
    Thank you so much!
    Carolina

  • #2
    See the documentation for the "forvalues" command ("help forvalues"):

    Code:
    forvalues i = 1/768 {
        generate best`i' = ODrnfl`i' if ODrnfl`i' > OSrnfl`i'
        replace best`i' = OSrnfl`i' if best`i' == .
    }
    In general, any time you want to perform the same command for multiple variables, start with the -forvalues- or -foreach- commands.

    EDIT: As Nick pointed out below, variable names can't start with numbers, so my code assumes that the variables are named OD1, OS1, etc. I'm guessing that's just a typo in your original post, because you say later that "there is OD or OS in the beginning of these 768 variables."
    Last edited by Michael Anbar; 30 Sep 2014, 12:03.

    Comment


    • #3
      Variable names cannot begin with numeric characters. Please tell us what the real names are.

      Comment


      • #4
        You want a forvalues loop here. There might be some more elegant way to get at what you're trying to accomplish, but:

        Code:
        forvalues z = 1/768 {
        gen best`z' = `z'OD if `z'OD > `z'OS
        replace best`z' = `z'OS if best`z'==.
        }

        Comment


        • #5
          Originally posted by Nick Cox View Post
          Variable names cannot begin with numeric characters. Please tell us what the real names are.
          The original post is ambiguous, but I'm guessing that 1OD, 1OS, etc. are typos, because her post also says that the variable names have OD and OS "in the beginning."

          Comment


          • #6
            Originally posted by E. David Aja View Post
            You want a forvalues loop here. There might be some more elegant way to get at what you're trying to accomplish, but:

            Code:
            forvalues z = 1/768 {
            gen best`z' = `z'OD if `z'OD > `z'OS
            replace best`z' = `z'OS if best`z'==.
            }
            I'm not sure how this is different from my code sample, except for a lack of indentation and the same error with variable names that Nick described above (see the post immediately after the original post).

            Comment


            • #7
              Thank for all your suggestions. I will try.
              Related to the question: "Variable names cannot begin with numeric characters. Please tell us what the real names are."
              Answer: The real name is ODrnfl1, OSrnfl1, ODrnfl2, OSrnfl2 etc.... I just wrote 1OD to keep simple. Sorry about that.
              Thank you

              Comment


              • #8
                Sorry to bother you again.

                I used this command below but it is not working...

                Did I did something wrong?
                Thank you


                This is my list of my variables of OD. And I have the same list for OS.
                forvalues i = 1/768 {
                generate best`i' = ODrnflmean_g-ODrnflt768`i' if ODrnflmean_g-ODrnflt768`i' > OSrnflmean_g-OSrnflt768`i'
                replace best`i' = OSrnflmean_g-OSrnflt768`i' if best`i' == .
                }



                ODrnflt1 ODrnflt2 ODrnflt3 ODrnflt4 ODrnflt5 ODrnflt6 ODrnflt7 ODrnflt8 ODrnflt9 ODrnflt10 ODrnflt11 ODrnflt12 ODrnflt13 ODrnflt14 ODrnflt15 ODrnflt16 ODrnflt17 ODrnflt18 ODrnflt19 ODrnflt20 ODrnflt21 ODrnflt22 ODrnflt23 ODrnflt24 ODrnflt25 ODrnflt26 ODrnflt27 ODrnflt28 ODrnflt29 ODrnflt30 ODrnflt31 ODrnflt32 ODrnflt33 ODrnflt34 ODrnflt35 ODrnflt36 ODrnflt37 ODrnflt38 ODrnflt39 ODrnflt40 ODrnflt41 ODrnflt42 ODrnflt43 ODrnflt44 ODrnflt45 ODrnflt46 ODrnflt47 ODrnflt48 ODrnflt49 ODrnflt50 ODrnflt51 ODrnflt52 ODrnflt53 ODrnflt54 ODrnflt55 ODrnflt56 ODrnflt57 ODrnflt58 ODrnflt59 ODrnflt60 ODrnflt61 ODrnflt62 ODrnflt63 ODrnflt64 ODrnflt65 ODrnflt66 ODrnflt67 ODrnflt68 ODrnflt69 ODrnflt70 ODrnflt71 ODrnflt72 ODrnflt73 ODrnflt74 ODrnflt75 ODrnflt76 ODrnflt77 ODrnflt78 ODrnflt79 ODrnflt80 ODrnflt81 ODrnflt82 ODrnflt83 ODrnflt84 ODrnflt85 ODrnflt86 ODrnflt87 ODrnflt88 ODrnflt89 ODrnflt90 ODrnflt91 ODrnflt92 ODrnflt93 ODrnflt94 ODrnflt95 ODrnflt96 ODrnflt97 ODrnflt98 ODrnflt99 ODrnflt100 ODrnflt101 ODrnflt102 ODrnflt103 ODrnflt104 ODrnflt105 ODrnflt106 ODrnflt107 ODrnflt108 ODrnflt109 ODrnflt110 ODrnflt111 ODrnflt112 ODrnflt113 ODrnflt114 ODrnflt115 ODrnflt116 ODrnflt117 ODrnflt118 ODrnflt119 ODrnflt120 ODrnflt121 ODrnflt122 ODrnflt123 ODrnflt124 ODrnflt125 ODrnflt126 ODrnflt127 ODrnflt128 ODrnflt129 ODrnflt130 ODrnflt131 ODrnflt132 ODrnflt133 ODrnflt134 ODrnflt135 ODrnflt136 ODrnflt137 ODrnflt138 ODrnflt139 ODrnflt140 ODrnflt141 ODrnflt142 ODrnflt143 ODrnflt144 ODrnflt145 ODrnflt146 ODrnflt147 ODrnflt148 ODrnflt149 ODrnflt150 ODrnflt151 ODrnflt152 ODrnflt153 ODrnflt154 ODrnflt155 ODrnflt156 ODrnflt157 ODrnflt158 ODrnflt159 ODrnflt160 ODrnflt161 ODrnflt162 ODrnflt163 ODrnflt164 ODrnflt165 ODrnflt166 ODrnflt167 ODrnflt168 ODrnflt169 ODrnflt170 ODrnflt171 ODrnflt172 ODrnflt173 ODrnflt174 ODrnflt175 ODrnflt176 ODrnflt177 ODrnflt178 ODrnflt179 ODrnflt180 ODrnflt181 ODrnflt182 ODrnflt183 ODrnflt184 ODrnflt185 ODrnflt186 ODrnflt187 ODrnflt188 ODrnflt189 ODrnflt190 ODrnflt191 ODrnflt192 ODrnflt193 ODrnflt194 ODrnflt195 ODrnflt196 ODrnflt197 ODrnflt198 ODrnflt199 ODrnflt200 ODrnflt201 ODrnflt202 ODrnflt203 ODrnflt204 ODrnflt205 ODrnflt206 ODrnflt207 ODrnflt208 ODrnflt209 ODrnflt210 ODrnflt211 ODrnflt212 ODrnflt213 ODrnflt214 ODrnflt215 ODrnflt216 ODrnflt217 ODrnflt218 ODrnflt219 ODrnflt220 ODrnflt221 ODrnflt222 ODrnflt223 ODrnflt224 ODrnflt225 ODrnflt226 ODrnflt227 ODrnflt228 ODrnflt229 ODrnflt230 ODrnflt231 ODrnflt232 ODrnflt233 ODrnflt234 ODrnflt235 ODrnflt236 ODrnflt237 ODrnflt238 ODrnflt239 ODrnflt240 ODrnflt241 ODrnflt242 ODrnflt243 ODrnflt244 ODrnflt245 ODrnflt246 ODrnflt247 ODrnflt248 ODrnflt249 ODrnflt250 ODrnflt251 ODrnflt252 ODrnflt253 ODrnflt254 ODrnflt255 ODrnflt256 ODrnflt257 ODrnflt258 ODrnflt259 ODrnflt260 ODrnflt261 ODrnflt262 ODrnflt263 ODrnflt264 ODrnflt265 ODrnflt266 ODrnflt267 ODrnflt268 ODrnflt269 ODrnflt270 ODrnflt271 ODrnflt272 ODrnflt273 ODrnflt274 ODrnflt275 ODrnflt276 ODrnflt277 ODrnflt278 ODrnflt279 ODrnflt280 ODrnflt281 ODrnflt282 ODrnflt283 ODrnflt284 ODrnflt285 ODrnflt286 ODrnflt287 ODrnflt288 ODrnflt289 ODrnflt290 ODrnflt291 ODrnflt292 ODrnflt293 ODrnflt294 ODrnflt295 ODrnflt296 ODrnflt297 ODrnflt298 ODrnflt299 ODrnflt300 ODrnflt301 ODrnflt302 ODrnflt303 ODrnflt304 ODrnflt305 ODrnflt306 ODrnflt307 ODrnflt308 ODrnflt309 ODrnflt310 ODrnflt311 ODrnflt312 ODrnflt313 ODrnflt314 ODrnflt315 ODrnflt316 ODrnflt317 ODrnflt318 ODrnflt319 ODrnflt320 ODrnflt321 ODrnflt322 ODrnflt323 ODrnflt324 ODrnflt325 ODrnflt326 ODrnflt327 ODrnflt328 ODrnflt329 ODrnflt330 ODrnflt331 ODrnflt332 ODrnflt333 ODrnflt334 ODrnflt335 ODrnflt336 ODrnflt337 ODrnflt338 ODrnflt339 ODrnflt340 ODrnflt341 ODrnflt342 ODrnflt343 ODrnflt344 ODrnflt345 ODrnflt346 ODrnflt347 ODrnflt348 ODrnflt349 ODrnflt350 ODrnflt351 ODrnflt352 ODrnflt353 ODrnflt354 ODrnflt355 ODrnflt356 ODrnflt357 ODrnflt358 ODrnflt359 ODrnflt360 ODrnflt361 ODrnflt362 ODrnflt363 ODrnflt364 ODrnflt365 ODrnflt366 ODrnflt367 ODrnflt368 ODrnflt369 ODrnflt370 ODrnflt371 ODrnflt372 ODrnflt373 ODrnflt374 ODrnflt375 ODrnflt376 ODrnflt377 ODrnflt378 ODrnflt379 ODrnflt380 ODrnflt381 ODrnflt382 ODrnflt383 ODrnflt384 ODrnflt385 ODrnflt386 ODrnflt387 ODrnflt388 ODrnflt389 ODrnflt390 ODrnflt391 ODrnflt392 ODrnflt393 ODrnflt394 ODrnflt395 ODrnflt396 ODrnflt397 ODrnflt398 ODrnflt399 ODrnflt400 ODrnflt401 ODrnflt402 ODrnflt403 ODrnflt404 ODrnflt405 ODrnflt406 ODrnflt407 ODrnflt408 ODrnflt409 ODrnflt410 ODrnflt411 ODrnflt412 ODrnflt413 ODrnflt414 ODrnflt415 ODrnflt416 ODrnflt417 ODrnflt418 ODrnflt419 ODrnflt420 ODrnflt421 ODrnflt422 ODrnflt423 ODrnflt424 ODrnflt425 ODrnflt426 ODrnflt427 ODrnflt428 ODrnflt429 ODrnflt430 ODrnflt431 ODrnflt432 ODrnflt433 ODrnflt434 ODrnflt435 ODrnflt436 ODrnflt437 ODrnflt438 ODrnflt439 ODrnflt440 ODrnflt441 ODrnflt442 ODrnflt443 ODrnflt444 ODrnflt445 ODrnflt446 ODrnflt447 ODrnflt448 ODrnflt449 ODrnflt450 ODrnflt451 ODrnflt452 ODrnflt453 ODrnflt454 ODrnflt455 ODrnflt456 ODrnflt457 ODrnflt458 ODrnflt459 ODrnflt460 ODrnflt461 ODrnflt462 ODrnflt463 ODrnflt464 ODrnflt465 ODrnflt466 ODrnflt467 ODrnflt468 ODrnflt469 ODrnflt470 ODrnflt471 ODrnflt472 ODrnflt473 ODrnflt474 ODrnflt475 ODrnflt476 ODrnflt477 ODrnflt478 ODrnflt479 ODrnflt480 ODrnflt481 ODrnflt482 ODrnflt483 ODrnflt484 ODrnflt485 ODrnflt486 ODrnflt487 ODrnflt488 ODrnflt489 ODrnflt490 ODrnflt491 ODrnflt492 ODrnflt493 ODrnflt494 ODrnflt495 ODrnflt496 ODrnflt497 ODrnflt498 ODrnflt499 ODrnflt500 ODrnflt501 ODrnflt502 ODrnflt503 ODrnflt504 ODrnflt505 ODrnflt506 ODrnflt507 ODrnflt508 ODrnflt509 ODrnflt510 ODrnflt511 ODrnflt512 ODrnflt513 ODrnflt514 ODrnflt515 ODrnflt516 ODrnflt517 ODrnflt518 ODrnflt519 ODrnflt520 ODrnflt521 ODrnflt522 ODrnflt523 ODrnflt524 ODrnflt525 ODrnflt526 ODrnflt527 ODrnflt528 ODrnflt529 ODrnflt530 ODrnflt531 ODrnflt532 ODrnflt533 ODrnflt534 ODrnflt535 ODrnflt536 ODrnflt537 ODrnflt538 ODrnflt539 ODrnflt540 ODrnflt541 ODrnflt542 ODrnflt543 ODrnflt544 ODrnflt545 ODrnflt546 ODrnflt547 ODrnflt548 ODrnflt549 ODrnflt550 ODrnflt551 ODrnflt552 ODrnflt553 ODrnflt554 ODrnflt555 ODrnflt556 ODrnflt557 ODrnflt558 ODrnflt559 ODrnflt560 ODrnflt561 ODrnflt562 ODrnflt563 ODrnflt564 ODrnflt565 ODrnflt566 ODrnflt567 ODrnflt568 ODrnflt569 ODrnflt570 ODrnflt571 ODrnflt572 ODrnflt573 ODrnflt574 ODrnflt575 ODrnflt576 ODrnflt577 ODrnflt578 ODrnflt579 ODrnflt580 ODrnflt581 ODrnflt582 ODrnflt583 ODrnflt584 ODrnflt585 ODrnflt586 ODrnflt587 ODrnflt588 ODrnflt589 ODrnflt590 ODrnflt591 ODrnflt592 ODrnflt593 ODrnflt594 ODrnflt595 ODrnflt596 ODrnflt597 ODrnflt598 ODrnflt599 ODrnflt600 ODrnflt601 ODrnflt602 ODrnflt603 ODrnflt604 ODrnflt605 ODrnflt606 ODrnflt607 ODrnflt608 ODrnflt609 ODrnflt610 ODrnflt611 ODrnflt612 ODrnflt613 ODrnflt614 ODrnflt615 ODrnflt616 ODrnflt617 ODrnflt618 ODrnflt619 ODrnflt620 ODrnflt621 ODrnflt622 ODrnflt623 ODrnflt624 ODrnflt625 ODrnflt626 ODrnflt627 ODrnflt628 ODrnflt629 ODrnflt630 ODrnflt631 ODrnflt632 ODrnflt633 ODrnflt634 ODrnflt635 ODrnflt636 ODrnflt637 ODrnflt638 ODrnflt639 ODrnflt640 ODrnflt641 ODrnflt642 ODrnflt643 ODrnflt644 ODrnflt645 ODrnflt646 ODrnflt647 ODrnflt648 ODrnflt649 ODrnflt650 ODrnflt651 ODrnflt652 ODrnflt653 ODrnflt654 ODrnflt655 ODrnflt656 ODrnflt657 ODrnflt658 ODrnflt659 ODrnflt660 ODrnflt661 ODrnflt662 ODrnflt663 ODrnflt664 ODrnflt665 ODrnflt666 ODrnflt667 ODrnflt668 ODrnflt669 ODrnflt670 ODrnflt671 ODrnflt672 ODrnflt673 ODrnflt674 ODrnflt675 ODrnflt676 ODrnflt677 ODrnflt678 ODrnflt679 ODrnflt680 ODrnflt681 ODrnflt682 ODrnflt683 ODrnflt684 ODrnflt685 ODrnflt686 ODrnflt687 ODrnflt688 ODrnflt689 ODrnflt690 ODrnflt691 ODrnflt692 ODrnflt693 ODrnflt694 ODrnflt695 ODrnflt696 ODrnflt697 ODrnflt698 ODrnflt699 ODrnflt700 ODrnflt701 ODrnflt702 ODrnflt703 ODrnflt704 ODrnflt705 ODrnflt706 ODrnflt707 ODrnflt708 ODrnflt709 ODrnflt710 ODrnflt711 ODrnflt712 ODrnflt713 ODrnflt714 ODrnflt715 ODrnflt716 ODrnflt717 ODrnflt718 ODrnflt719 ODrnflt720 ODrnflt721 ODrnflt722 ODrnflt723 ODrnflt724 ODrnflt725 ODrnflt726 ODrnflt727 ODrnflt728 ODrnflt729 ODrnflt730 ODrnflt731 ODrnflt732 ODrnflt733 ODrnflt734 ODrnflt735 ODrnflt736 ODrnflt737 ODrnflt738 ODrnflt739 ODrnflt740 ODrnflt741 ODrnflt742 ODrnflt743 ODrnflt744 ODrnflt745 ODrnflt746 ODrnflt747 ODrnflt748 ODrnflt749 ODrnflt750 ODrnflt751 ODrnflt752 ODrnflt753 ODrnflt754 ODrnflt755 ODrnflt756 ODrnflt757 ODrnflt758 ODrnflt759 ODrnflt760 ODrnflt761 ODrnflt762 ODrnflt763 ODrnflt764 ODrnflt765 ODrnflt766 ODrnflt767 ODrnflt768

                Comment


                • #9
                  I'm a bit confused; is it the case that "best" is defined here as the highest value? if yes, then why not just use -egen- with rowmax option? if no, please clarify

                  Comment


                  • #10
                    There is no obvious need for the characters "768" within the loop.

                    Comment


                    • #11
                      Dear Goldstein,
                      I want one variable for the highest value between ODrnfl1 and OSrnfl1, then another variable for the highest value between ODrnfl2 and OSrnfl2, etc ODrnfl768 and OSrnfl768. Do you have a better suggestion if I use rowmax option?
                      Thank you

                      Comment


                      • #12
                        I think that from a coding simplicity perspective, Rich Goldstein is right:

                        Code:
                        forvalues j = 1/768 {
                            egen best`j' = rowmax(ODrnflt`j' OSrnflt`j')
                        }

                        Comment


                        • #13
                          Look one example. I already have ODrnfl and OSrnfl, I need to create bestrnfl1, bestrnfl2, bestrnfl3, bestrnfl768 (768 variables).
                          I am really in doubt what to do now. Thank you
                          ODrnfl1 ODrnfl2 ODrnfl3 ODrnfl768 OSrnfl1 OSrnfl2 OSrnfl3 OSrnfl768 bestrnfl1 bestrnfl2 bestrnfl3 bestrnfl768
                          10 2 10 2 2 2 30 40 10 2 30 40

                          Comment


                          • #14
                            Carolina: Your posts contradict each other. Now (#11) you say you just want the maximum of each pair which is just

                            Code:
                             
                            forval i = 1/768 {   
                                  gen best`i' = max(ODrnfl`i', OSrnfl`i') 
                            }
                            but comparing deviations from different means is not at all the same thing. Also if you work (#8) with (OD mean - OD value) and (OS mean - OS value) your inequalities are reversed.

                            Comment


                            • #15
                              Dear Cox,
                              Thank you so much.
                              I really appreciate your help. Sometimes I have problems with the language.
                              I could create the variables. However a message appear "no room to add more variables Up to 2,048 variables are allowed with this version of Stata. Versions are available that allow up to 32,767 variables."
                              I think I have to switch the command to get all the results. Thank you any way.
                              Carolina

                              Comment

                              Working...
                              X