如何在 Stata 中根据日期创建日数变量?

问题描述 投票:0回答:1

我想创建一个变量,其中包含参与者参加调查的天数(第一天、第二天、第三天等)。问题是有些参与者在午夜之后参加了调查。例如,它看起来像这样:

Id  date
1   08/03/2020 08:17
1   08/03/2020 12:01
1   08/04/2020 15:08
1   08/04/2020 22:16
2   07/03/2020 08:10
2   07/03/2020 12:03
2   07/04/2020 15:07
2   07/05/2020 00:16
3   08/22/2020 09:17
3   08/23/2020 11:04
3   08/24/2020 00:01
4   10/03/2020 08:37
4   10/03/2020 11:13
4   10/04/2020 15:20
4   10/04/2020 23:05

这就是我想要的:

Id  date    day
1   08/03/2020 08:17    1
1   08/03/2020 12:01    1
1   08/04/2020 15:08    2
1   08/04/2020 22:16    2
2   07/03/2020 08:10    1
2   07/03/2020 12:03    1
2   07/04/2020 15:07    2
2   07/05/2020 00:16    2
3   08/22/2020 09:17    1
3   08/23/2020 11:04    2
3   08/24/2020 00:01    2
4   10/03/2020 08:37    1
4   10/03/2020 11:13    1
4   10/04/2020 15:20    2
4   10/04/2020 23:05    2

如何创建日期变量,考虑到午夜后参加调查的参与者仍然属于前一天?

stata
1个回答
0
投票

这是一个未确认的变体 如何根据日期在 R 中创建日期数字变量?

这里没有正确的数据示例:请参阅

stata
标签 wiki。因此,您的日期变量(实际上是日期时间变量)是字符串变量还是格式化数字变量是不明确的。

对于午夜之后允许的时间没有准确的定义。除午夜外的所有时间均在午夜之后!

这里的标准是最多允许120分钟。根据您的精确标准进行更改。

这里的代码从假定的初始日期时间字符串一直到使用

mod(,)
以及 Stata 对日期时间使用毫秒分辨率的原理,但你的日期时间分辨率为分钟。

* Example generated by -dataex-. For more info, type help dataex
clear
input byte id str16 sdate
1 "08/03/2020 08:17"
1 "08/03/2020 12:01"
1 "08/04/2020 15:08"
1 "08/04/2020 22:16"
2 "07/03/2020 08:10"
2 "07/03/2020 12:03"
2 "07/04/2020 15:07"
2 "07/05/2020 00:16"
3 "08/22/2020 09:17"
3 "08/23/2020 11:04"
3 "08/24/2020 00:01"
4 "10/03/2020 08:37"
4 "10/03/2020 11:13"
4 "10/04/2020 15:20"
4 "10/04/2020 23:05"
end

gen double datetime = clock(sdate, "MDY hm")
gen ddate = dofc(datetime)
format date %tc 
format ddate %td 

gen min_after_mid = mod(datetime, 24 * 60 * 60000)/60000

bysort id : gen wanted = cond(min_after_mid <= 120, ddate - ddate[1], ddate - ddate[1] + 1)  

list, sepby(id)


     +----------------------------------------------------------------------------+
     | id              sdate             datetime       ddate   min_af~d   wanted |
     |----------------------------------------------------------------------------|
  1. |  1   08/03/2020 08:17   03aug2020 08:17:00   03aug2020        497        1 |
  2. |  1   08/03/2020 12:01   03aug2020 12:01:00   03aug2020        721        1 |
  3. |  1   08/04/2020 15:08   04aug2020 15:08:00   04aug2020        908        2 |
  4. |  1   08/04/2020 22:16   04aug2020 22:16:00   04aug2020       1336        2 |
     |----------------------------------------------------------------------------|
  5. |  2   07/03/2020 08:10   03jul2020 08:10:00   03jul2020        490        1 |
  6. |  2   07/03/2020 12:03   03jul2020 12:03:00   03jul2020        723        1 |
  7. |  2   07/04/2020 15:07   04jul2020 15:07:00   04jul2020        907        2 |
  8. |  2   07/05/2020 00:16   05jul2020 00:16:00   05jul2020         16        2 |
     |----------------------------------------------------------------------------|
  9. |  3   08/22/2020 09:17   22aug2020 09:17:00   22aug2020        557        1 |
 10. |  3   08/23/2020 11:04   23aug2020 11:04:00   23aug2020        664        2 |
 11. |  3   08/24/2020 00:01   24aug2020 00:01:00   24aug2020          1        2 |
     |----------------------------------------------------------------------------|
 12. |  4   10/03/2020 08:37   03oct2020 08:37:00   03oct2020        517        1 |
 13. |  4   10/03/2020 11:13   03oct2020 11:13:00   03oct2020        673        1 |
 14. |  4   10/04/2020 15:20   04oct2020 15:20:00   04oct2020        920        2 |
 15. |  4   10/04/2020 23:05   04oct2020 23:05:00   04oct2020       1385        2 |
     +----------------------------------------------------------------------------+
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.