|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: check if string or numeric
I would like to check for type of variable (string, numeric, etc) in a program, and then take action on the basis of the type. For instance, if it's string, I encode it; else I leave it as is.
The following klugey program seems to solve the problem *part of the time*. But certainly there is a more elegant way?
capture program drop checkIfString
program define checkIfString, rclass
di "check if `1' is string or numeric"
quietly tabulate `1'
local NobsRegardlessOfStringOrNumeric=r(N)
quietly summarize `1'
local NobsOnlyIfNumeric=r(N)
di "NobsRegardlessOfStringOrNumeric: `NobsRegardlessOfStringOrNumeric' and NobsOnlyIfNumeric: `NobsOnlyIfNumeric'"
if (`NobsRegardlessOfStringOrNumeric'>0) & ( `NobsRegardlessOfStringOrNumeric' == `NobsOnlyIfNumeric' ) {
return local type="numeric"
}
else {
if (`NobsRegardlessOfStringOrNumeric'>0) & ( `NobsOnlyIfNumeric'==0 ) {
return local type="string"
}
else {
return local type="not sure"
}
}
end
clear
set obs 5
gen x=_n
gen y="a"
gen z=.
gen w=""
list
checkIfString x
return list
checkIfString y
return list
checkIfString z
return list
checkIfString w
return list
This seems like a FAQ but I haven't found the answer yet on the Web.
Thanks for any tips
Jake
Jacob A. Wegelin
[email protected]
Assistant Professor
Department of Biostatistics
Virginia Commonwealth University
730 East Broad Street Room 3006
P. O. Box 980032
Richmond VA 23298-0032
U.S.A.
http://www.people.vcu.edu/~jwegelin
*
* 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/