为什么Stata将布尔值存储为float?

时间:2014-09-10 19:57:34

标签: storage stata

我有一个看起来像这样的变量" 88.0 *"或" 79.5"星号是某种东西的旗帜。要提取此标志,我运行

gen newvar = regexm(oldvar,"\*$")

这样可以正常工作,但是我的新变量是浮点数,看起来效率很低。

Stata以字节格式提供存储,那么为什么regexm命令(指示0/1是否找到匹配)默认为什么?就此而言,为什么generate(上面缩写为gen)默认情况下压缩右侧,或者至少作为选项压缩?

1 个答案:

答案 0 :(得分:2)

您可以在gen

之后指定存储类型
clear
set more off

input ///
str5(var1 var2)
"88.0*" "79.5 "
end

list

gen byte newvar = regexm(var1,"\*$")

list

describe

请注意,Stata没有布尔类型。 0为假,1为真。 generate的语法是(来自help generate):

generate [type] newvar[:lblname] =exp [if] [in]

类型出现在括号内,这意味着它是一个选项。 另请参阅help compress以减少数据使用的内存。