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, 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   Erik Lenguerrand <>
Subject   Re: st: Using the format of a variable to trigger different command
Date   Thu, 26 Jul 2012 12:14:37 +0100

This is exactly what I need!
Many thanks Maarten!

--On 26 July 2012 12:34 +0200 Maarten Buis <> wrote:

On Thu, Jul 26, 2012 at 12:04 PM, Erik Lenguerrand
<> 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
	// check if intger
	capture assert mod(`varlist',1) == 0 if `touse'
	if _rc {
		return scalar iscat = 0
	//check number of categories
	qui levelsof `varlist' if `touse'
	local k : word count `r(levels)'
	if `k' > `kmax' {
		return scalar iscat = 0
	else {
		return scalar iscat = 1

// 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 L. Buis
Institut fuer Soziologie
Universitaet Tuebingen
Wilhelmstrasse 36
72074 Tuebingen
*   For searches and help try:

Erik Lenguerrand, MSc, PhD
Medical Statistician
School of Clinical Science
Bristol Implant Research Centre/RISQ Unit
Lower Level, Avon Orthopaedic Center
Southmead Hospital
BS10 5NB
*   For searches and help try:

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