全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅
13420 4
2017-12-18
悬赏 10 个论坛币 未解决
各位大神,请问在用stata时命令如下,报错:nort sorted怎么解决?我的目的是将变量V取值为0时,将V的值换成后一年的值减1. 请问正确的命令是什么呢?感激不尽


. xtset code year
       panel variable:  code (unbalanced)
        time variable:  year, 2003 to 2013, but with gaps
                delta:  1 unit

. gsort code -year

. replace v=f.v-1 if v==0
not sorted

r(5);


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-12-18 13:26:38
应该是with gaps出问题了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-12-22 03:39:38
code 建议:

sort code year
by code: replace v = v[_n+1]-1  if v == 0

如果需要相同code, 年份必须是相邻下一年,可以增加条件:

sort code year
by code: replace v = v[_n+1]-1  if v == 0 & code == code[_n+1] & year == year[_n+1]-1
最后把还是0 的v值删了,他们没有可以匹配的下一年份的值

drop if v == 0

或者你有别的替代方法就再附加code

然后 xtset code year 放在哪里都行,只要在xtreg前就行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-9-10 17:51:24
在Stata中,"not sorted"错误通常意味着你在尝试使用需要数据集按特定顺序排序的命令之前,数据集并没有按照该要求进行排序。根据你的描述和代码,“gsort code -year”这行似乎已经在尝试将数据按照`code`升序和`year`降序排序了。

但是Stata返回"not sorted"错误可能是因为在排序之后或运行其它命令后,数据集的排序状态被改变了。当你运行“replace v=f.v-1 if v==0”时需要数据保持已排序的状态,尤其是当使用滞后的函数(如f.)来引用前一年的数据。

要解决这个问题,请确保你的数据集始终按照`code`和`year`变量正确排序。你可以通过以下步骤再次尝试:

1. 再次运行排序命令:
```
gsort code -year
```

2. 然后立即执行替换操作,确保在两步之间没有插入其他可能改变数据排序的命令:
```
replace v = f.v-1 if v == 0 & _n > 1
```

这里,`_n > 1`是条件用来避免在第一条观测值(对于每个`code`)时尝试引用前一条不存在的数据。

如果仍然遇到问题,建议检查数据集是否存在缺失值或异常值,特别是`code`和`year`变量中。如果有任何不连续的年份或错误的代码值,这可能会影响排序的有效性。你也可以使用`tsset code year, clear`再次声明面板数据结构以确保没有遗漏。

另外,请确保你的Stata版本是更新到最新状态,并且所有的包都已正确安装和加载,尤其是如果你在用任何用户编写的命令或额外的Stata软件包。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-9-10 23:10:08
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群