以下是来自US consumer expenditure survey (2011) p的码本的两个样本变量的格式。 62.
VARIABLE_NAME VARIABLE_DESCRIPTION Format Note
FEDRFNDX During the past 12 months, what was the total amount of refund received from Federal income tax by ALL CU members?
NUM(8)
FEDTAXX During the past 12 months, what was the total amount PAID for Federal income tax, in addition to that
withheld from earnings, by ALL CU members?
NUM(8)
其中CU表示消费者单位(或家庭).Stata数据文件显示FEDRFNDX和FEDTAXX变量的以下格式:
FEDRFNDX int %8.0g
FEDTAXX long %12.0g
我的问题是为什么这些变量的Stata格式有所不同,尽管它们在码本中都是NUM(8)并且两者都参考了数量。作为调查数据的最终用户,我们如何确保我们拥有正确的格式(例如,如果我们只是给出了像上面那样的码本说NUM(8)和变量的起始位置加上ascii数据而不是Stata数据)?
如果这个问题太局部化,我道歉。
答案 0 :(得分:4)
该格式仅说明了如何显示数据,而不是如何存储数据。在这种情况下,格式是不同存储类型的默认值:FEDRFNDX存储为int
,而FEDTAXX存储为long
。您可以输入Stata help data_types
来了解有关差异的更多信息。
我猜是
两者都可以安全地存储为int
而不会丢失信息
或FEDRFNDX只有小于32,740的整数值,这意味着它不使用码本为其保留的全部8位数,而FEDTAXX使用大于32,740的整数。 32,740是可以存储在(2字节)int
中的最大数字,而2,147,483,620是(4字节)long
的限制。
检查其中哪一项是正确的安全方法是在加载数据集后键入compress
。这会将每个变量的存储类型更改为可能的最低格式,而不会丢失信息。因此,如果我的第一个猜测是真的,它会将FEDTAXX的存储类型更改为int
,而如果我的第二个猜测为真,它将保持存储类型不变。
之后,只需键入tab FEDTAXX
并查看值即可。我喜欢用户编写的命令fre
,因为它显示值和值标签。您可以输入Stata ssc install fre
。
答案 1 :(得分:3)
@Maarten Buis给出了一个很好的具体答案。以下更一般的评论对于评论来说太长了。
Stata中的“格式”是什么,是不是误解的主题。最好的原因可能是计算中“格式”的松散,变化的意义。无论是什么原因,这里特定意义上的格式仅指Stata显示格式。更改与变量关联的格式的主要方法是通过format
命令,该命令的帮助是一个很好的起点。
Stata通过使其数据类型存储类型显然让许多用户感到惊讶,这使得用户对用户非常了解,并且对用户选择存储类型负有相当大的责任。但是存储类型和格式之间的联系最多是松散的,即不同的存储类型具有不同的默认格式。
了解更改Stata中的格式并不会改变存储的内容至关重要。
对中级和/或长期用户的理解测试是能够解释这里发生的事情
. set obs 1
obs was 0, now 1
. gen foo = 2000000001
. di %12.0f foo[1]
2000000000
为什么Stata(看起来)围绕那个大整数? (线索:这不是一个错误,但只是Stata遵循你对存储类型的默认指示。)