我想查查一个星期或一个月的工人人数。数据浏览器中的月份变量看起来像"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
根据上面列出的周和月变量的格式,按给定日期计算工人人数和数据子集的最佳方法是什么?
发布于 2021-08-30 13:40:06
获得错误的原因是在week==06jan2018
中测试变量week
与变量06jan2018
相似的所有值。我知道这不是你想要做的,而是你要你的代码去做的事情。据我所知,您没有一个名为06jan2018
的变量,您将无法像在Stata中一样,有一个以数字开头的变量名。
如果变量week
是字符串变量(文本变量),那么您可以通过week=="06jan2018"
将week
与字符串06jan2018
进行比较。但是,您的变量是具有显示格式的数字。这是在Stata中处理日期的最有效方法,但您需要理解的是,您只能使用基础值而不是dispayed格式执行条件操作。2018年1月6日与斯塔塔的21190
相对应。请参阅您自己的dataex
示例和阅读有关如何使用Stata中的日期的文档。。
所以你可以:
preserve
keep if week==21190
distinct union_workers
restore
但是,这是否是最佳实践取决于您打算如何使用此计数。您是将其传输到纸张/Word文档,还是将其合并回工作数据集?
发布于 2021-08-30 13:43:03
请注意,变量week
存储为浮点数,而不是字符串。2018年1月6日只是变量中底层日期值的格式化显示,类似于标记的整数。
要引用本周的观察结果,您需要使用浮动值,在2018年06年1月1日的一周,浮点数为21190。因此,下面的代码应该可以工作:
preserve
keep if week == 21190
distinct union_workers
restore
https://stackoverflow.com/questions/68984810
复制相似问题