Stata删除多个观测值

Stata删除多个观测值,stata,data-management,Stata,Data Management,我有以下数据矩阵,其中包含定制数据集中的意识形态分数: year state cdnum party name dwnom1 1946 23 10 200 WOODRUFF 0.43 1946 23 11 200 BRADLEY F. 0.534 1946 23 11 200 POTTER C. 0.278 1946 23

我有以下数据矩阵,其中包含定制数据集中的意识形态分数:

year    state   cdnum   party   name        dwnom1
1946     23       10    200    WOODRUFF       0.43
1946     23       11    200   BRADLEY  F.    0.534
1946     23       11    200    POTTER  C.    0.278
1946     23       12    200   BENNETT  J.    0.189
我的分析单位是给定的国会选区,在给定的年份。正如我们可以看到的,州23,cdnum 11,在1946年有两次观测

我想做的是删除前面的观察,在本例中是与name:BRADLEY.F相对应的观察。当一个国会选区在给定的国会中有两名议员时,就会发生这种情况。我尝试的代码尝试如下:

 drop if year==[_n+1] & statenum==[_n+1] & cdnum==[_n+1] 
我的尝试是一个有条件的参数,如果:年份与下一个观察值相同,statenum与下一个观察值相同,cdnum与下一个观察值相同,则放弃观察值。通过这种方式,我可以确保每个地区在给定的年份只有一个对应的区域。当我尝试运行代码时,我得到:

drop if year==[_n-1] & statenum==[_n-1] & cdnum==[_n-1] 
(0 observations deleted)

简短的备选方案:您应该检查
duplicates
命令

错误的详细解释:

你对斯塔塔说的不是真心话

你的情况,例如

if year == [_n-1] 
应该是

if year == year[_n-1]
等等

[_n-1] 
就其本身而言,被视为您键入了

_n-1 
这是观测值,减去1

下面是一个愚蠢的例子。读入自动数据

. sysuse auto
(1978 Automobile Data)

. list foreign if foreign == [_n-1], nola

     +---------+
    | foreign |
    |---------|
 1. |       0 |
    +---------+
变量
foreign
精确地等于
\u n-1
,在观察值1中,当
foreign
为0且
\u n
为1时

简而言之,
[\u n-1]
而不是被解释为(我刚才提到的变量的)前面的值


帮助订阅
提供了非常基本的帮助

您的最后两篇文章已迁移到堆栈溢出,这将随之发生。请注意该模式,并在帮助中心咨询有关软件特定问题的建议。你说的不是真心话<代码>如果年份==[\n-1]应该是
如果年份==年份[\n-1]
,等等。请参见不包括签名的。善意是假定的;我们不需要阅读额外的问候或感谢。