Stata 统计:按周汇总

Stata 统计:按周汇总,stata,Stata,我有一个数据集,其中有一个日期变量缺少日期 var1 15sep2014 15sep2014 17sep2014 18sep2014 22sep2014 22sep2014 22sep2014 29sep2014 06oct2014 我使用这个命令聚合了数据 gen week = week(var1) 结果是这样的 var 1 week 15sep2014 37 15sep2014 37 17sep2014 38 18sep2014 38 22sep2014 3

我有一个数据集,其中有一个日期变量缺少日期

var1
15sep2014
15sep2014
17sep2014
18sep2014
22sep2014
22sep2014
22sep2014
29sep2014
06oct2014
我使用这个命令聚合了数据

gen week = week(var1)
结果是这样的

var 1      week
15sep2014   37
15sep2014   37
17sep2014   38
18sep2014   38
22sep2014   38

我想知道是否可以在week变量中获取月份名称和年份

不使用
week()
函数,我可能会使用
wofd()
函数将
%td
每日日期转换为
%tw
每周日期。然后,您可以使用datetime显示格式来决定日期的确切格式。例如:

gen date_weekly = wofd(var1)
format date_weekly %twww:_Mon_ccYY
该代码应提供以下信息:

var1        date_weekly
15sep2014   37: Sep 2014
15sep2014   37: Sep 2014
17sep2014   38: Sep 2014
18sep2014   38: Sep 2014
22sep2014   38: Sep 2014
此帮助文件将非常有用:

help datetime display formats
如果您想重温一下
%tw
%td
日期之间的差异,您可以在这里刷新自己:

help datetime

我可能不会使用
week()
函数,而是使用
wofd()
函数将
%td
每日日期转换为
%tw
每周日期。然后,您可以使用datetime显示格式来决定日期的确切格式。例如:

gen date_weekly = wofd(var1)
format date_weekly %twww:_Mon_ccYY
该代码应提供以下信息:

var1        date_weekly
15sep2014   37: Sep 2014
15sep2014   37: Sep 2014
17sep2014   38: Sep 2014
18sep2014   38: Sep 2014
22sep2014   38: Sep 2014
此帮助文件将非常有用:

help datetime display formats
如果您想重温一下
%tw
%td
日期之间的差异,您可以在这里刷新自己:

help datetime

我可能不会使用
week()
函数,而是使用
wofd()
函数将
%td
每日日期转换为
%tw
每周日期。然后,您可以使用datetime显示格式来决定日期的确切格式。例如:

gen date_weekly = wofd(var1)
format date_weekly %twww:_Mon_ccYY
该代码应提供以下信息:

var1        date_weekly
15sep2014   37: Sep 2014
15sep2014   37: Sep 2014
17sep2014   38: Sep 2014
18sep2014   38: Sep 2014
22sep2014   38: Sep 2014
此帮助文件将非常有用:

help datetime display formats
如果您想重温一下
%tw
%td
日期之间的差异,您可以在这里刷新自己:

help datetime

我可能不会使用
week()
函数,而是使用
wofd()
函数将
%td
每日日期转换为
%tw
每周日期。然后,您可以使用datetime显示格式来决定日期的确切格式。例如:

gen date_weekly = wofd(var1)
format date_weekly %twww:_Mon_ccYY
该代码应提供以下信息:

var1        date_weekly
15sep2014   37: Sep 2014
15sep2014   37: Sep 2014
17sep2014   38: Sep 2014
18sep2014   38: Sep 2014
22sep2014   38: Sep 2014
此帮助文件将非常有用:

help datetime display formats
如果您想重温一下
%tw
%td
日期之间的差异,您可以在这里刷新自己:

help datetime
通常,
week()
是解决方案的一部分,当且仅当您根据Stata的周规则定义周时。是的

  • 不管怎样,一年的第一周从1月1日开始
  • 无论如何,一年的第二周从1月8日开始
  • 依此类推,除了一年中的第52周包括8天或9天,这取决于 不管这一年是不是闰年 你使用这些规则吗?我想不是。那么最简单的做法就是以一周开始的哪一天来定义一周。如果你的工作周从星期天开始,那么使用规则
    dailydate
    -dow(
    dailydate
    )。如果您的工作周从周一开始,…,周六,请调整定义

    . clear 
    
    . input str9 svar1
    
         svar1
    1. "15sep2014"
    2. "15sep2014"
    3. "17sep2014"
    4. "18sep2014"
    5. "22sep2014"
    6. "22sep2014"
    7. "22sep2014"
    8. "29sep2014"
    9. "06oct2014" 
    10. end 
    
    . gen var1 = daily(svar1, "DMY") 
    
    . gen week = var1 - dow(var1) 
    
    . format week var1 %td 
    
    . list
    
        +-----------------------------------+
        |     svar1        var1        week |
        |-----------------------------------|
     1. | 15sep2014   15sep2014   14sep2014 |
     2. | 15sep2014   15sep2014   14sep2014 |
     3. | 17sep2014   17sep2014   14sep2014 |
     4. | 18sep2014   18sep2014   14sep2014 |
     5. | 22sep2014   22sep2014   21sep2014 |
        |-----------------------------------|
     6. | 22sep2014   22sep2014   21sep2014 |
     7. | 22sep2014   22sep2014   21sep2014 |
     8. | 29sep2014   29sep2014   28sep2014 |
     9. | 06oct2014   06oct2014   05oct2014 |
        +-----------------------------------+
    
    更多的讨论,尽管第一次应该足够了

    通常,
    week()
    是解决方案的一部分,当且仅当您根据Stata的周规则定义周时。是的

  • 不管怎样,一年的第一周从1月1日开始
  • 无论如何,一年的第二周从1月8日开始
  • 依此类推,除了一年中的第52周包括8天或9天,这取决于 不管这一年是不是闰年 你使用这些规则吗?我想不是。那么最简单的做法就是以一周开始的哪一天来定义一周。如果你的工作周从星期天开始,那么使用规则
    dailydate
    -dow(
    dailydate
    )。如果您的工作周从周一开始,…,周六,请调整定义

    . clear 
    
    . input str9 svar1
    
         svar1
    1. "15sep2014"
    2. "15sep2014"
    3. "17sep2014"
    4. "18sep2014"
    5. "22sep2014"
    6. "22sep2014"
    7. "22sep2014"
    8. "29sep2014"
    9. "06oct2014" 
    10. end 
    
    . gen var1 = daily(svar1, "DMY") 
    
    . gen week = var1 - dow(var1) 
    
    . format week var1 %td 
    
    . list
    
        +-----------------------------------+
        |     svar1        var1        week |
        |-----------------------------------|
     1. | 15sep2014   15sep2014   14sep2014 |
     2. | 15sep2014   15sep2014   14sep2014 |
     3. | 17sep2014   17sep2014   14sep2014 |
     4. | 18sep2014   18sep2014   14sep2014 |
     5. | 22sep2014   22sep2014   21sep2014 |
        |-----------------------------------|
     6. | 22sep2014   22sep2014   21sep2014 |
     7. | 22sep2014   22sep2014   21sep2014 |
     8. | 29sep2014   29sep2014   28sep2014 |
     9. | 06oct2014   06oct2014   05oct2014 |
        +-----------------------------------+
    
    更多的讨论,尽管第一次应该足够了

    通常,
    week()
    是解决方案的一部分,当且仅当您根据Stata的周规则定义周时。是的

  • 不管怎样,一年的第一周从1月1日开始
  • 无论如何,一年的第二周从1月8日开始
  • 依此类推,除了一年中的第52周包括8天或9天,这取决于 不管这一年是不是闰年 你使用这些规则吗?我想不是。那么最简单的做法就是以一周开始的哪一天来定义一周。如果你的工作周从星期天开始,那么使用规则
    dailydate
    -dow(
    dailydate
    )。如果您的工作周从周一开始,…,周六,请调整定义

    . clear 
    
    . input str9 svar1
    
         svar1
    1. "15sep2014"
    2. "15sep2014"
    3. "17sep2014"
    4. "18sep2014"
    5. "22sep2014"
    6. "22sep2014"
    7. "22sep2014"
    8. "29sep2014"
    9. "06oct2014" 
    10. end 
    
    . gen var1 = daily(svar1, "DMY") 
    
    . gen week = var1 - dow(var1) 
    
    . format week var1 %td 
    
    . list
    
        +-----------------------------------+
        |     svar1        var1        week |
        |-----------------------------------|
     1. | 15sep2014   15sep2014   14sep2014 |
     2. | 15sep2014   15sep2014   14sep2014 |
     3. | 17sep2014   17sep2014   14sep2014 |
     4. | 18sep2014   18sep2014   14sep2014 |
     5. | 22sep2014   22sep2014   21sep2014 |
        |-----------------------------------|
     6. | 22sep2014   22sep2014   21sep2014 |
     7. | 22sep2014   22sep2014   21sep2014 |
     8. | 29sep2014   29sep2014   28sep2014 |
     9. | 06oct2014   06oct2014   05oct2014 |
        +-----------------------------------+
    
    更多的讨论,尽管第一次应该足够了

    通常,
    week()
    是解决方案的一部分,当且仅当您根据Stata的周规则定义周时。是的

  • 不管怎样,一年的第一周从1月1日开始
  • 无论如何,一年的第二周从1月8日开始
  • 依此类推,除了一年中的第52周包括8天或9天,这取决于 不管这一年是不是闰年 你使用这些规则吗?我想不是。那么最简单的做法就是以一周开始的哪一天来定义一周。如果你的工作周从星期天开始,那么使用规则
    dailydate
    -dow(
    dailydate
    )。如果您的工作周从周一开始,…,周六,请调整定义

    . clear 
    
    . input str9 svar1
    
         svar1
    1. "15sep2014"
    2. "15sep2014"
    3. "17sep2014"
    4. "18sep2014"
    5. "22sep2014"
    6. "22sep2014"
    7. "22sep2014"
    8. "29sep2014"
    9. "06oct2014" 
    10. end 
    
    . gen var1 = daily(svar1, "DMY") 
    
    . gen week = var1 - dow(var1) 
    
    . format week var1 %td 
    
    . list
    
        +-----------------------------------+
        |     svar1        var1        week |
        |-----------------------------------|
     1. | 15sep2014   15sep2014   14sep2014 |
     2. | 15sep2014   15sep2014   14sep2014 |
     3. | 17sep2014   17sep2014   14sep2014 |
     4. | 18sep2014   18sep2014   14sep2014 |
     5. | 22sep2014   22sep2014   21sep2014 |
        |-----------------------------------|
     6. | 22sep2014   22sep2014   21sep2014 |
     7. | 22sep2014   22sep2014   21sep2014 |
     8. | 29sep2014   29sep2014   28sep2014 |
     9. | 06oct2014   06oct2014   05oct2014 |
        +-----------------------------------+
    

    更多的讨论,尽管第一次应该足够了

    这并没有解决Stata中周的特殊定义,这不太可能符合实质性需求。请看我的答案和参考资料。@NickCox啊,没错。谢谢这并没有解决Stata中周的特殊定义,这不太可能符合实质性需求。请看我的答案和参考资料。@NickCox啊,没错。谢谢这并没有解决Stata对周的特殊定义,这是不可能的