Stata有一些简单的功能可以将人类可读形式(HRF)的日期转换为Stata内部形式(SIF)。但是,我想将SIF日期转换为HRF日期。使用display %td
和相关命令,我可以打印正确的日期。但我想将转换后的日期保存到宏中。
遗憾的是,以下代码段不起作用:
di %tw 2080
local week %tw 2080
di "`week'"
更新:我现在使用以下循环来实现重新标记变量的最初目的。
foreach i of varlist week_* {
local weekcount = substr("`i'", 6, 9)
local tmp_year = 1960 + int(`weekcount'/52)
local tmp_week = 1 + `weekcount' - int(`weekcount'/52)*52
lab var `i' "`tmp_year'w`tmp_week'"
}
答案 0 :(得分:2)
这个答案分为两个不同的部分。
首先,我非常怀疑您的日期是否符合Stata每周日期。这些每周日期的定义是
任何一年的第1周从1月1日开始,无论一周中的哪一天。
第2周等等,开始7天后的倍数。
第52周总是包括8天(非闰年)或9天(闰年)。
因此,几周总是在几年内筑巢。规则#2本身并不令人惊讶,但规则#1和#3通常都是。
我还没有遇到使用这些定义的StataCorp以外的任何机构,尽管第一次会有所帮助!
其次,您的语法不能满足您的需求。举个例子,这里遇到的问题是display
的工作是解释它作为显示指令给出的内容,而不是完全回应它的论点。使用macro list
(并忽略不相关的细节),
. local week %tw 2080
. mac li
_week: %tw 2080
表明您的local
作业只会复制您提供的文字。 display
将其视为一条指令,但在display
上下文之外,格式不会受到影响。将display
,extended_fcn
和macro
的帮助中的材料拼接在一起会产生语法
. local week : display %tw 2080
. mac li
_week: 2000w1
应用格式并根据请求将格式的结果放在宏中。
更多关于display
:这个序列很有启发性。
. di "%tw 2080"
%tw 2080
. di %tw "2080"
2080
. di %tw 2080
2000w1
在第一个中,格式%tw
作为文字字符串的一部分包含在内,因此不被视为指令。在第二种情况下,格式被忽略,仅与数字参数相关,因此与" "
所呈现的文字字符串无关。在第三个,你会得到你想要的。
有关Stata周的更多信息,请参阅
的结果. search week, sj
Search of official help files, FAQs, Examples, SJs, and STBs
SJ-12-4 dm0065_1 . . . . . Stata tip 111: More on working with weeks, erratum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox
Q4/12 SJ 12(4):765 (no commands)
lists previously omitted key reference
SJ-12-3 dm0065 . . . . . . . . . . Stata tip 111: More on working with weeks
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox
Q3/12 SJ 12(3):565--569 (no commands)
discusses how to convert data presented in yearly and weekly
form to daily dates and how to aggregate such data to months
or longer intervals
SJ-10-4 dm0052 . . . . . . . . . . . . . . . . Stata tip 68: Week assumptions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox
Q4/10 SJ 10(4):682--685 (no commands)
tip on Stata's solution for weeks and on how to set up
your own alternatives given different definitions of the
week
如果您在Stata中执行此操作,您将获得相关文章的可点击链接。底线是一条建议:通过日常日期来定义周数,通常但不一定是一周的开始或结束。
完全不同的细节是您拥有广泛的数据结构,这在Stata中通常比长数据结构更成问题。
注意:在我写这篇文章的过程中编辑了这个问题,所以有些章节引用了问题中不再存在的材料。