Stata基础:数据显示格式和四舍五入

全文阅读: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 后与原数据保持一致呢?或者说怎么操作才能将结果正确地分类呢?

回答:

  1. 你在 csv 文件或 Excel 文件中看到的数据格式,比如 0.002 并不是这个观察值的真实面目,你看到的可能只是其化妆后的摸样 —— 显示格式。大家在 Excel 中,经常选中一列数据,然后 「右击 → 设定单元格格式」,这其实都是在设定变量的显示格式。其真实数值可能是 0.0020000000949949
  2. 当你使用 insheet 或 import excel 等命令把 Excel 数据文档导入 Stata 时,导入的是其真实数值(0.0020000000949949),而不是 0.002
  3. 因此,你可以再导入前,把 Excel 中的观察值粘贴到一个文本文件中,看看其真实面目。也可以再导入 Stata 以后进行二次处理。比如,使用 round() 函数进行四舍五入。
  4. 不过,多数情况下应该都没有问题。在你的问题中,你是预先设定了分组 界点 (cut-point) = 0.002,才会引发上述问题。

全文阅读:https://www.lianxh.cn/news/3865a3c886083.html

上一篇:剑指offer - 从尾到头打印链表


下一篇:MySQL数据库SQL修改数据规范