楼主: zd504
13585 4

[统计软件与数据分析] stata运行报错: not sorted [推广有奖]

  • 0关注
  • 2粉丝

等待验证会员

博士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
512 个
通用积分
2.8525
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2061 点
帖子
87
精华
0
在线时间
228 小时
注册时间
2016-1-11
最后登录
2025-2-19

楼主
zd504 学生认证  发表于 2017-12-18 11:57:25 |AI写论文
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);


关键词:sorted Stata 运行报错 tata SOR

沙发
奇犽dsp 学生认证  发表于 2017-12-18 13:26:38
应该是with gaps出问题了。

藤椅
flytosky4 学生认证  发表于 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

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-26 02:33