按日期变量对数据进行子集化(Stata)
Subsetting data by date variables (Stata)
我想查看给定周或月的工人数量。数据浏览器中的月份变量看起来像“Jan2018”,而周变量像“06jan2018”。
为了计算给定一周的工人数量,我 运行 下面的代码:
preserve
keep if week==06jan2018
distinct union_workers
restore
我收到以下错误“06jan2018 无效名称”。
周和月变量如下所示:
*Example generated by -dataex-. To install: ssc install dataex
clear
input float week int month
21211 696
21211 696
21211 696
21204 696
21211 696
21190 696
21204 696
21190 696
21190 696
21190 696
21211 696
21204 696
21211 696
21204 696
end
format %td week
format %tmMonYY month
describe month week
storage display value
variable name type format label variable label
--------------------------------------------------------------------------------------------------------------------------------------------
month int %tmMonYY
week float %td
考虑到上面列出的周和月变量的格式,计算给定日期的工人数量和数据子集的最佳方法是什么?
出现错误的原因是,在 week==06jan2018
中,您测试了变量 week
与变量 06jan2018
相似的所有值。我知道这不是你的意思,而是你告诉你的代码要做的。我知道您没有名为 06jan2018
的变量,并且您不能像在 Stata 中那样使用以数字开头的变量名称。
如果您的变量 week
是一个字符串变量(文本变量),那么您可以 week=="06jan2018"
将 week
与字符串 06jan2018
进行比较。但是,您的变量是具有显示格式的数字。这是在 Stata 中处理日期的最有效方式,但您需要了解您只能对基础值而不是显示格式进行条件操作。日期 2018 年 1 月 6 日对应于 Stata 中的 21190
。请参阅您自己的 dataex
示例和 read the documentation for how to work with dates in Stata.
所以你可以这样做:
preserve
keep if week==21190
distinct union_workers
restore
但这是否是最佳做法取决于您打算如何使用此计数。您是将其转移到 paper/Word 文档,还是将其合并回工作数据集?
请注意,变量 week
存储为 float,而不是字符串。 06jan2018 只是变量中基础日期值的格式化显示,类似于标记的整数。
要引用本周的观测值,需要使用浮点值,即06jan2018这一周为21190。所以下面的代码应该可以工作:
preserve
keep if week == 21190
distinct union_workers
restore
我想查看给定周或月的工人数量。数据浏览器中的月份变量看起来像“Jan2018”,而周变量像“06jan2018”。
为了计算给定一周的工人数量,我 运行 下面的代码:
preserve
keep if week==06jan2018
distinct union_workers
restore
我收到以下错误“06jan2018 无效名称”。
周和月变量如下所示:
*Example generated by -dataex-. To install: ssc install dataex
clear
input float week int month
21211 696
21211 696
21211 696
21204 696
21211 696
21190 696
21204 696
21190 696
21190 696
21190 696
21211 696
21204 696
21211 696
21204 696
end
format %td week
format %tmMonYY month
describe month week
storage display value
variable name type format label variable label
--------------------------------------------------------------------------------------------------------------------------------------------
month int %tmMonYY
week float %td
考虑到上面列出的周和月变量的格式,计算给定日期的工人数量和数据子集的最佳方法是什么?
出现错误的原因是,在 week==06jan2018
中,您测试了变量 week
与变量 06jan2018
相似的所有值。我知道这不是你的意思,而是你告诉你的代码要做的。我知道您没有名为 06jan2018
的变量,并且您不能像在 Stata 中那样使用以数字开头的变量名称。
如果您的变量 week
是一个字符串变量(文本变量),那么您可以 week=="06jan2018"
将 week
与字符串 06jan2018
进行比较。但是,您的变量是具有显示格式的数字。这是在 Stata 中处理日期的最有效方式,但您需要了解您只能对基础值而不是显示格式进行条件操作。日期 2018 年 1 月 6 日对应于 Stata 中的 21190
。请参阅您自己的 dataex
示例和 read the documentation for how to work with dates in Stata.
所以你可以这样做:
preserve
keep if week==21190
distinct union_workers
restore
但这是否是最佳做法取决于您打算如何使用此计数。您是将其转移到 paper/Word 文档,还是将其合并回工作数据集?
请注意,变量 week
存储为 float,而不是字符串。 06jan2018 只是变量中基础日期值的格式化显示,类似于标记的整数。
要引用本周的观测值,需要使用浮点值,即06jan2018这一周为21190。所以下面的代码应该可以工作:
preserve
keep if week == 21190
distinct union_workers
restore