楼主: sallycui
5568 14

[数据管理求助] week函数如何处理跨年的周次? [推广有奖]

  • 5关注
  • 0粉丝

本科生

11%

还不是VIP/贵宾

-

威望
0
论坛币
77 个
通用积分
8.3117
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
35010 点
帖子
37
精华
0
在线时间
100 小时
注册时间
2012-12-25
最后登录
2021-3-21

楼主
sallycui 学生认证  发表于 2017-8-18 16:10:34 |AI写论文
5论坛币
想把日次数据改为周次数据,但使用week()函数生成周次后发现,2010年12月24和2010年12月31日的week数值都是52,这样重复的week数值使xtset时无法按照周次设为面板,求助如何处理这个问题。。。举例:
(其中week是由命令gen week =week(日期)生成的,周次是由命令gen 周次=yw(年份,week)生成的,day_of_week是由命令gen day_of_week=dow(日期)生成的)
因为我想要按照ID和周次作为xtset的变量,这样就出现问题,时间变量有重复。。求各位牛牛指导!
ID 日期 年份 week 周次day_of_week
34 24dec2010 2010 522651 5
3431dec2010 2010 52 26515

最佳答案

黃河泉 查看完整内容

1. 你应该用"回复"来回复!2. 你點回覆你的程序部分根本看不清楚! 3. 请试试

沙发
黃河泉 在职认证  发表于 2017-8-18 16:10:35
sallycui 发表于 2017-8-21 18:06
请问我还是没有说清楚吗?
1. 你应该用"回复"来回复!2. 你點回覆你的程序部分根本看不清楚! 3. 请试试
  1. gen w = wofd(日期_Date)
  2. format w %tw
  3. bys ID (w): gen t = _n

  4. xtset ID t
复制代码

藤椅
sallycui 学生认证  发表于 2017-8-18 17:38:28 来自手机
是我描述的不够清楚吗?哪里不清楚还请大家提出来

板凳
黃河泉 在职认证  发表于 2017-8-18 17:42:59
sallycui 发表于 2017-8-18 17:38
是我描述的不够清楚吗?哪里不清楚还请大家提出来
1. 你只有一年的週資料嗎?還是多年的? (這樣你就不能 xtset ID week) 2. 試試
  1. bys ID (日期): gen t = _n
  2. xtset ID t
复制代码

报纸
黃河泉 在职认证  发表于 2017-8-18 17:45:33
sallycui 发表于 2017-8-18 17:38
是我描述的不够清楚吗?哪里不清楚还请大家提出来
尔后建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考
https://bbs.pinggu.org/thread-5917273-1-1.html


地板
sallycui 学生认证  发表于 2017-8-20 10:04:51
黃河泉 发表于 2017-8-18 17:42
1. 你只有一年的週資料嗎?還是多年的? (這樣你就不能 xtset ID week) 2. 試試
是多年的数据

7
qiangli 发表于 2017-8-20 10:30:56 来自手机
先按照黄老师的方法,提供代表性数据在讨论吧。否则很难得到解决办法

8
sallycui 学生认证  发表于 2017-8-20 10:34:52
黃河泉 发表于 2017-8-18 17:45
尔后建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列 ...
[/DATA]请见附件
[/CODE]
gen 年份=year( 日期_Date )
label variable 年份 "year( 日期_Date )"
gen week=week( 日期_Date )
label variable week "week( 日期_Date )"
gen 周次=yw(年份, week)
label variable  周次 "yw(年份, week)"
xtset ID 周次 ,w


[/error]
repeated time values within panel
r(451);

[/PROBLEM]

我想要按照周次进行面板数据的设定(ID为个体编号,周次为年份&当年周次),但由于week()函数的输出值是以每年的第1天到第7天为第一周,以此类推,输出值范围限于1-52,每年365天(7+52+1)的话,2010年有53个周五,但最后两个周五(2010年12月24和2010年12月31)的week函数输出值均为52,造成time value重复,无法使用xtset。求指导如何解决这个问题

9
sallycui 学生认证  发表于 2017-8-20 10:37:54
黃河泉 发表于 2017-8-18 17:42
1. 你只有一年的週資料嗎?還是多年的? (這樣你就不能 xtset ID week) 2. 試試
因为是多年的数据,所以我使用的是xtset ID 周次,w
其中周次是使用yw (年份,week) 生成的

10
sallycui 学生认证  发表于 2017-8-20 11:46:28
黃河泉 发表于 2017-8-18 17:45
尔后建議用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列 ...
[/DATA]请见附件
[/CODE]
gen 年份=year( 日期_Date )
label variable 年份 "year( 日期_Date )"
gen week=week( 日期_Date )
label variable week "week( 日期_Date )"
gen 周次=yw(年份, week)
label variable  周次 "yw(年份, week)"
xtset ID 周次 ,w


[/error]
repeated time values within panel
r(451);

[/PROBLEM]

我想要按照周次进行面板数据的设定(ID为个体编号,周次为年份&当年周次),但由于week()函数的输出值是以每年的第1天到第7天为第一周,以此类推,输出值范围限于1-52,每年365天(7+52+1)的话,2010年有53个周五,但最后两个周五(2010年12月24和2010年12月31)的week函数输出值均为52,造成time value重复,无法使用xtset。求指导如何解决这个问题

example.dta

29.8 KB

这是我的数据样例,我是在此数据基础上进行code输入的

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-21 10:03