我想创建一个变量,其中包含参与者参加调查的天数(第一天、第二天、第三天等)。问题是有些参与者在午夜之后参加了调查。例如,如下所示:
| 身份证|日期|
| - ------|- ------|
| 1个|2020年8月3日8时17分|
| 1个|2020年3月8日12时01分|
| 1个|2020年8月4日15:08|
| 1个|2020年4月8日22时16分|
| 第二章|2020年7月3日8时10分|
| 第二章|2020年7月3日12时03分|
| 第二章|2020年7月4日15:07|
| 第二章|2020年5月7日00:16|
| 三个|2020年8月22日09:17|
| 三个|2020年8月23日11:04|
| 三个|2020年8月24日00:01|
| 四个|2020年10月3日08时37分|
| 四个|2020年10月3日11时13分|
| 四个|2020年10月4日15时20分|
| 四个|2020年10月4日23时05分|
这就是我想要的
| 身份证|日期|日|
| - ------|- ------|- ------|
| 1个|2020年8月3日8时17分|1个|
| 1个|2020年3月8日12时01分|1个|
| 1个|2020年8月4日15:08|第二章|
| 1个|2020年4月8日22时16分|第二章|
| 第二章|2020年7月3日8时10分|1个|
| 第二章|2020年7月3日12时03分|1个|
| 第二章|2020年7月4日15:07|第二章|
| 第二章|2020年5月7日00:16|第二章|
| 三个|2020年8月22日09:17|1个|
| 三个|2020年8月23日11:04|第二章|
| 三个|2020年8月24日00:01|第二章|
| 四个|2020年10月3日08时37分|1个|
| 四个|2020年10月3日11时13分|1个|
| 四个|2020年10月4日15时20分|第二章|
| 四个|2020年10月4日23时05分|第二章|
如何创建日变量,同时考虑到午夜后参加调查的参与者仍属于前一天?
我尝试了代码here。但我有问题与参与者午夜后进行调查。
2条答案
按热度按时间7d7tgy0s1#
请检查以下代码
编号
输出
gpnt7bae2#
这里有一种方法可以显式地显示所考虑的日期。首先,确保您的
date
是注解中建议的POSIX格式(如果尚未完成)。然后,如果hour
小于2(午夜到凌晨2点)从日期中减去1,使survey_date
反映前一天。如果hour
不小于2,只需保留日期。时区tz
参数设置为""以避免混淆或不确定。最后,按Id
分组后,从first
survey_date
中减去每个survey_date
,以获得自第一次调查以来的天数。如果需要,您可以使用as.numeric
使此列变为数字。注意:如果您只想记录调查的连续天数(并忽略调查之间的天数间隔),您可以替换最后一行:
对于给定的
Id
,每发现一个新的survey_date
,day
就增加1。