使用Stata将每周日期转换为每月周数据

时间:2017-11-07 06:04:08

标签: date stata

我在Stata中有一个%tw日期格式变量。我想生成每月一周的变量。就像下面的例子中一样,变量Date2现在有1999w14,我想在Stata中生成1999mayw1。我该如何处理这个

Date2   date2
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w14 1999mayw1
1999w15 1999mayw2
1999w15 1999mayw2
1999w15 1999mayw2
1999w15 1999mayw2
1999w15 1999mayw2
1999w15 1999mayw2
1999w15 1999mayw2

1 个答案:

答案 0 :(得分:0)

Stata没有给定月份第一周的概念。怎么可能呢?周数不会整齐地映射到几个月,甚至反之亦然,除非你在非闰年讨论2月,这恰好是4周,但是从不同年份的不同日期开始。

如果你有一个特定的一周概念,例如它从星期一开始,然后告诉我们它是什么。

Stata第1周总是从1月1日开始,1月8日开始,依此类推,第52周总是有8天或9天。如果您的数据符合这些定义,那很好。否则,您可能需要进行一些阅读以找出与您的问题相符的内容。

如果您在Stata中发出以下命令,您将获得.pdf版本的可点击链接。

. 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 Journal 站点下载labmask(以search labmask, sj开头)。

clear 
set obs 10 
gen wdate = yw(1999, _n) 
format wdate %tw  
list 

gen mdate = mofd(dofw(wdate)) 
format mdate %tm 
bysort mdate (wdate) : gen week = _n 

gen label = string(mdate, "%tm") + "w" + string(week) 

clonevar wdate2 = wdate

* install from Stata Journal site after -search labmask- 
labmask wdate2, values(label) 

list, sepby(mdate)  

     +-----------------------------------------------+
     |   wdate    mdate   week      label     wdate2 |
     |-----------------------------------------------|
  1. |  1999w1   1999m1      1   1999m1w1   1999m1w1 |
  2. |  1999w2   1999m1      2   1999m1w2   1999m1w2 |
  3. |  1999w3   1999m1      3   1999m1w3   1999m1w3 |
  4. |  1999w4   1999m1      4   1999m1w4   1999m1w4 |
  5. |  1999w5   1999m1      5   1999m1w5   1999m1w5 |
     |-----------------------------------------------|
  6. |  1999w6   1999m2      1   1999m2w1   1999m2w1 |
  7. |  1999w7   1999m2      2   1999m2w2   1999m2w2 |
  8. |  1999w8   1999m2      3   1999m2w3   1999m2w3 |
  9. |  1999w9   1999m2      4   1999m2w4   1999m2w4 |
     |-----------------------------------------------|
 10. | 1999w10   1999m3      1   1999m3w1   1999m3w1 |
     +-----------------------------------------------+