全文阅读:https://www.lianxh.cn/news/3865a3c886083.html
问题背景:
您好!我是一名 stata 的初学者,刚学习就感觉到 stata 强大无比。目前,我遇到了一个数值型变量的问题,特向您请教,非常感谢!
通过 insheet
导入 csv格式
的数据,对于不同的变量,csv 文件中保留有效位数并不完全一致。比如其中一个变量 x,保留了小数点后 3 位,但导入后就默认为浮点型了,进行数次条件删除后,筛选形成新的数据,但新数据与原数据在小数点位数不一致了。
我可以通过 format
或者 recast
将数据的显示格式修改为3 位,但其实际并不是 3 位。这导致我的条件判断语句无法正常执行。比如:我需要判断以上这个 x
变量大于 0.002 的个数,由于导入数据过程中,把 0.002
的值自动变成了0.0020000000949949
(大于 0.002)。我的分类条件语句(x <= 0.002
为一类,而 x > 0.002
为另一类)就会产生错误判断。
想请教老师,怎么才能让这个变量在导入 stata 后与原数据保持一致呢?或者说怎么操作才能将结果正确地分类呢?
回答:
- 你在
csv
文件或Excel
文件中看到的数据格式,比如0.002
并不是这个观察值的真实面目,你看到的可能只是其化妆后的摸样
—— 显示格式。大家在 Excel 中,经常选中一列数据,然后 「右击 → 设定单元格格式」,这其实都是在设定变量的显示格式。其真实数值可能是0.0020000000949949
! - 当你使用
insheet
或import excel
等命令把 Excel 数据文档导入 Stata 时,导入的是其真实数值(0.0020000000949949
),而不是 0.002。 - 因此,你可以再导入前,把 Excel 中的观察值粘贴到一个文本文件中,看看其真实面目。也可以再导入 Stata 以后进行二次处理。比如,使用
round()
函数进行四舍五入。 - 不过,多数情况下应该都没有问题。在你的问题中,你是预先设定了分组 界点 (cut-point) = 0.002,才会引发上述问题。
全文阅读:https://www.lianxh.cn/news/3865a3c886083.html