The most common cause of this error message is that you are trying to use a string variable with a command that only supports numeric variables. You can only tell the type of a variable by using the describe command. 
This is easy to fix. 
If you have a string variable and want to convert it to a numeric variable, you can use the encode command. If you have a string variable that has only numbers in it, then you can alternatively use the real() function. 
 . describe
    
 Contains data
   obs:             4                          
  vars:             2                          
  size:            48 
 ------------------------------------------------------------------------
                      storage  display     value
 variable name   type   format      label      variable label
 ------------------------------------------------------------------------
 a                    str4    %9s                   
 b                    str4   %9s                    
 ------------------------------------------------------------------------
 Sorted by:  
      Note:  dataset has changed since last saved
 
 . list
 
      +-------+
      | a   b |
      |-------|
   1. | 1   a |
   2. | 2   b |
   3. | 3   c |
   4. | 4   d |
      +-------+
 
 . gen na = real(a)
 . encode b, gen(nb)
 . describe
        
 Contains data
   obs:             4                          
  vars:             4                          
  size:            80 
 ------------------------------------------------------------------------
                   storage  display       value
 variable name   type   format      label      variable label
 ------------------------------------------------------------------------
 a               str4   %9s                    
 b               str4   %9s                    
 na              float  %9.0g                  
 nb              long   %8.0g       nb         
 ------------------------------------------------------------------------
 Sorted by:  
      Note:  dataset has changed since last saved
 
 . list
      +-----------------+
      | a   b   na   nb |
      |-----------------|
   1. | 1   a    1    a |
   2. | 2   b    2    b |
   3. | 3   c    3    c |
   4. | 4   d    4    d |
      +-----------------+
Although nb is a numeric variable, it looks like a string variable because the encode command added value labels to it. 
 . list nb, nolab
      +----+
      | nb |
      |----|
   1. |  1 |
   2. |  2 |
   3. |  3 |
   4. |  4 |
      +----+