Format Stata格式

Format Stata格式,format,stata,survey,Format,Stata,Survey,下面是p代码本中两个样本变量的格式。62. 其中CU表示消费者单位(或家庭)。Stata数据文件显示FEDRFNDX和FEDTAXX变量的以下格式: FEDRFNDX int %8.0g FEDTAXX long %12.0g 我的问题是为什么这些变量的Stata格式不同,尽管它们在代码本中都是NUM(8),并且都引用了数量。作为调查数据的最终用户,我们如何确保我们拥有正确的格式(例如,如果我们只得到上面提到的代码本,比如NUM(8)和变量的起始位置加上ascii

下面是p代码本中两个样本变量的格式。62.

其中CU表示消费者单位(或家庭)。Stata数据文件显示FEDRFNDX和FEDTAXX变量的以下格式:

FEDRFNDX    int     %8.0g
FEDTAXX long        %12.0g
我的问题是为什么这些变量的Stata格式不同,尽管它们在代码本中都是NUM(8),并且都引用了数量。作为调查数据的最终用户,我们如何确保我们拥有正确的格式(例如,如果我们只得到上面提到的代码本,比如NUM(8)和变量的起始位置加上ascii数据而不是Stata数据)


如果这个问题过于本地化,我深表歉意

格式只说明数据的显示方式,而不是存储方式。在这种情况下,格式是不同存储类型的默认格式:FEDRFNDX存储为
int
,而FEDTAXX存储为
long
。通过在Stata
帮助数据类型中键入,您可以了解更多有关差异的信息

我猜是这样

  • 两者都可以安全地存储为
    int
    ,而不会丢失信息

  • 或者FEDRFNDX的整数值小于32740,这意味着它不使用代码本为其保留的完整8位数字,而FEDTAXX使用大于32740的整数。32740是可存储在(2字节)
    int
    中的最大数字,而2147483620是(4字节)
    的限制

  • 检查哪一项为真的安全方法是在加载数据集后键入
    compress
    。这会将每个变量的存储类型更改为尽可能低的形式,而不会丢失信息。因此,如果我的第一个猜测为真,它将把FEDTAXX的存储类型更改为
    int
    ,而如果我的第二个猜测为真,它将保持存储类型不变


    之后,最好只键入
    tab FEDTAXX
    并查看值。我喜欢用户编写的命令
    fre
    ,因为它同时显示值和值标签。您可以通过在Stata
    ssc install fre

    中键入来获得,该格式只说明数据的显示方式,而不是数据的存储方式。在这种情况下,格式是不同存储类型的默认格式:FEDRFNDX存储为
    int
    ,而FEDTAXX存储为
    long
    。通过在Stata
    帮助数据类型中键入,您可以了解更多有关差异的信息

    我猜是这样

  • 两者都可以安全地存储为
    int
    ,而不会丢失信息

  • 或者FEDRFNDX的整数值小于32740,这意味着它不使用代码本为其保留的完整8位数字,而FEDTAXX使用大于32740的整数。32740是可存储在(2字节)
    int
    中的最大数字,而2147483620是(4字节)
    的限制

  • 检查哪一项为真的安全方法是在加载数据集后键入
    compress
    。这会将每个变量的存储类型更改为尽可能低的形式,而不会丢失信息。因此,如果我的第一个猜测为真,它将把FEDTAXX的存储类型更改为
    int
    ,而如果我的第二个猜测为真,它将保持存储类型不变


    之后,最好只键入
    tab FEDTAXX
    并查看值。我喜欢用户编写的命令
    fre
    ,因为它同时显示值和值标签。你可以通过输入Stata
    ssc install fre

    @Maarten Buis给出了一个非常具体的答案。以下较为笼统的评论太长,无法发表评论

    什么是“格式”,什么不是Stata中的格式,是几个误解的主题。最好的理由可能是“格式”在整个计算领域的含义松散、不断变化。不管是什么原因,在这里,特定意义上的格式在Stata中仅指显示格式。更改与变量关联的格式的主要方法是通过
    format
    命令,该命令的帮助是一个很好的起点

    Stata将其数据类型设置为存储类型,使其对用户相当可见,并让用户在选择存储类型时承担相当大的责任,这显然让许多用户感到惊讶。但存储类型和格式之间的联系充其量是松散的,即不同的存储类型具有不同的默认格式

    理解更改Stata中的格式不会更改存储的内容是至关重要的

    对中级和/或长期用户的理解测试是能够解释这里发生了什么

    . set obs 1
    obs was 0, now 1
    
    . gen foo = 2000000001
    
    . di %12.0f foo[1]
    2000000000
    

    为什么斯塔塔(看起来)要对那个大整数进行四舍五入?(提示:这不是一个bug,只是按照您关于存储类型的默认说明进行操作。)

    @Maarten Buis给出了一个非常具体的答案。以下较为笼统的评论太长,无法发表评论

    什么是“格式”,什么不是Stata中的格式,是几个误解的主题。最好的理由可能是“格式”在整个计算领域的含义松散、不断变化。不管是什么原因,在这里,特定意义上的格式在Stata中仅指显示格式。更改与变量关联的格式的主要方法是通过
    format
    命令,该命令的帮助是一个很好的起点

    Stata将其数据类型设置为存储类型,使其对用户相当可见,并让用户在选择存储类型时承担相当大的责任,这显然让许多用户感到惊讶。但存储类型和格式之间的联系充其量是松散的,即不同的存储类型具有不同的默认格式

    理解更改Stata中的格式不会更改存储的内容是至关重要的

    联合国的考验
    . set obs 1
    obs was 0, now 1
    
    . gen foo = 2000000001
    
    . di %12.0f foo[1]
    2000000000