Announcement

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

  • looping and creating tables

    Hello, I am trying to create multiple tables using looping for ptfidelity_1_ - ptfidelity_11_ below.

    I have viewed the stata help for loops and have tried

    foreach var of varlist {
    ptfidelity_1_ ptfidelity_2_ ptfidelity_3_ ptfidelity_4_ ptfidelity_5_ ///
    ptfidelity_6_ ptfidelity_7_ ptfidelity_8_ ptfidelity_9_ ptfidelity_10_ ptfidelity_11_
    tab `var' if redcap_event_name_rc == 1
    }

    I keep getting a error stating that varlist is required. I have tried various version of above. Thanks for the help. i know this has to be ridiculously simple....​​​​​​

    ​​​​​​clear
    input float redcap_event_name_rc byte(ptfidelity_1_ ptfidelity_2_ ptfidelity_3_ ptfidelity_4_ ptfidelity_5_ ptfidelity_6_ ptfidelity_7_ ptfidelity_8_ ptfidelity_9_ ptfidelity_10_ ptfidelity_11_)
    0 . . . . . . . . . . .
    1 1 1 1 1 0 1 1 1 . 1 .
    0 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 0 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 0 1 1 1 0 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    0 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 0 0 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 0 1 0 1 0
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 0 1 0 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 0 0 0 1 0
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 0 0 0 0 0 0 1 0 0
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 1 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 1 0 0 1 0 0 0 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 0 0 0 0 1 0 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 1 1 . 1 1
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 0 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 0 0 0 0 0 1 0 0 0 0 0
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 0 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 0 1 1 1 0 1 0 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 0 0 0 0 0 0 0 1 1 0
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 0 1 1 1 1 1 1 1
    2 . . . . . . . . . . .
    3 . . . . . . . . . . .
    0 . . . . . . . . . . .
    1 1 1 1 1 0 0 0 0 1 1 1
    end
    label values ptfidelity_1_ pt_fidelity_1_
    label def pt_fidelity_1_ 0 "No", modify
    label def pt_fidelity_1_ 1 "Yes", modify
    label values ptfidelity_2_ pt_fidelity_2_
    label def pt_fidelity_2_ 0 "No", modify
    label def pt_fidelity_2_ 1 "Yes", modify
    label values ptfidelity_3_ pt_fidelity_3_
    label def pt_fidelity_3_ 0 "No", modify
    label def pt_fidelity_3_ 1 "Yes", modify
    label values ptfidelity_4_ pt_fidelity_4_
    label def pt_fidelity_4_ 0 "No", modify
    label def pt_fidelity_4_ 1 "Yes", modify
    label values ptfidelity_5_ pt_fidelity_5_
    label def pt_fidelity_5_ 0 "No", modify
    label def pt_fidelity_5_ 1 "Yes", modify
    label values ptfidelity_6_ pt_fidelity_6_
    label def pt_fidelity_6_ 0 "No", modify
    label def pt_fidelity_6_ 1 "Yes", modify
    label values ptfidelity_7_ pt_fidelity_7_
    label def pt_fidelity_7_ 0 "No", modify
    label def pt_fidelity_7_ 1 "Yes", modify
    label values ptfidelity_8_ pt_fidelity_8_
    label def pt_fidelity_8_ 0 "No", modify
    label def pt_fidelity_8_ 1 "Yes", modify
    label values ptfidelity_9_ pt_fidelity_9_
    label def pt_fidelity_9_ 0 "No", modify
    label def pt_fidelity_9_ 1 "Yes", modify
    label values ptfidelity_10_ pt_fidelity_10_
    label def pt_fidelity_10_ 0 "No", modify
    label def pt_fidelity_10_ 1 "Yes", modify
    label values ptfidelity_11_ pt_fidelity_11_
    label def pt_fidelity_11_ 0 "No", modify
    label def pt_fidelity_11_ 1 "Yes", modify
    [/CODE]

  • #2
    Your understanding of the syntax of the foreach command is incorrect. This seems to do what you want.
    Code:
    foreach var of varlist ///
    ptfidelity_1_ ptfidelity_2_ ptfidelity_3_ ptfidelity_4_ ptfidelity_5_ ///
    ptfidelity_6_ ptfidelity_7_ ptfidelity_8_ ptfidelity_9_ ptfidelity_10_ ptfidelity_11_ {
    tab `var' if redcap_event_name_rc == 1
    }
    as does
    Code:
    foreach var of varlist ptfidelity_* {
    tab `var' if redcap_event_name_rc == 1
    }
    See the output of help varlist for more on how they can save typing.
    Last edited by William Lisowski; 17 Dec 2018, 10:52.

    Comment


    • #3
      EDIT: Crossed with William's post. We both identify the same problem with the loop syntax.

      Hi Jake, the list of variables has to go before the first "{"

      Code:
      foreach var of varlist ptfidelity_1_ ptfidelity_2_ ptfidelity_3_ ptfidelity_4_ ptfidelity_5_ ///
      ptfidelity_6_ ptfidelity_7_ ptfidelity_8_ ptfidelity_9_ ptfidelity_10_ ptfidelity_11_  {
      tab `var' if redcap_event_name_rc == 1
      }
      Since your list of variables goes from 1 to 11, you could also use a forvalues loop
      Code:
      forvalues i = 1/11 {
      tabulate ptfidelity_`i'_ if redcap_event_name_rc == 1
      }

      Comment


      • #4
        Thanks to you both. I understand why it was not working now. And thank for the shortcut, David.

        Comment


        • #5
          Although the loop technique here is extremely useful, for this particular problem there is a documented alternative:

          Code:
          tab1 ptfidelity_*_  if if redcap_event_name_rc == 1
          Naturally tab1 turns out to be just a loop over tabulate as well, but with more bells, whistles and error trapping.

          Comment


          • #6
            Code:
            if if
            should naturally be

            Code:
            if

            Comment

            Working...
            X