Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Using the format of a variable to trigger different command


From   Maarten Buis <maartenlbuis@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Using the format of a variable to trigger different command
Date   Thu, 26 Jul 2012 12:34:22 +0200

On Thu, Jul 26, 2012 at 12:04 PM, Erik Lenguerrand
<Erik.Lenguerrand@bristol.ac.uk> wrote:
> I would like to use the "foreach varlist" command to loop over a large list
> of variables  to automate a listing of descriptive statistics.
>
> However the statistical tool to use should depend on the nature of the
> variable. (ie tab command for categorical variables and sum command for
> continuous variables)
>
> I am wondering if there is a stata command to identify the variable format,
> ie something which will generate a binary outcome like 1 if is it continuous
> variable and 0 if not.

Stata does not have the concept of continuous versus categorical
variable. However, you can define a categorical variable as containing
either only strings or only integers and having a limited number of
categories, and than create a Stata program that checks that. Below is
a quick stab at such a program:

*----------------- begin example ---------------------
clear all
program define iscat, rclass
	version 12.1
	syntax varname [if] [in], [ kmax(integer 20) ]
	
	marksample touse
	
	// check if string
	capture confirm string variable `varlist'
	if !_rc {
		return scalar iscat = 0
		exit
	}
	
	// check if intger
	capture assert mod(`varlist',1) == 0 if `touse'
	if _rc {
		return scalar iscat = 0
		exit
	}
	//check number of categories
	qui levelsof `varlist' if `touse'
	local k : word count `r(levels)'
	if `k' > `kmax' {
		return scalar iscat = 0
		exit
	}
	else {
		return scalar iscat = 1
		exit
	}
end

// try it out on some example data
sysuse auto

iscat rep78
return list

iscat mpg
return list

iscat foreign
return list

iscat headroom
return list

iscat make
return list
*------------------ end example ----------------------	
	
Hope this helps,
Maarten

--------------------------
Maarten L. Buis
Institut fuer Soziologie
Universitaet Tuebingen
Wilhelmstrasse 36
72074 Tuebingen
Germany


http://www.maartenbuis.nl
--------------------------
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index