Stata删除多个观察

时间:2014-11-13 23:51:33

标签: 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       12    200   BENNETT  J.    0.189

我的分析单位是某一年的特定国会选区。正如人们可以看到状态#23,cdnum#11,在1946年有两个观察结果。

我想要做的是删除之前的观察,在这种情况下,观察对应于名称:BRADLEY.F。当国会区在特定国会中有两名成员时,就会发生这种情况。我尝试过的代码尝试如下:

 drop if year==[_n+1] & statenum==[_n+1] & cdnum==[_n+1] 

我的尝试是一个条件参数,如果出现以下情况则放弃观察:年份与下一次观察相同,状态与下一次观察相同,并且cdnum与下一次观察相同。通过这种方式,我可以确保每个区域只有一个对应的特定年份。当我尝试运行代码时,我得到了:

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

1 个答案:

答案 0 :(得分:0)

简要替代方案:您应该查看duplicates命令。

错误的详细说明:

你不是指你对Stata所说的话。

您的条件,例如

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为0且_n - 1为1时,变量foreign恰好等于_n一次,在观察1中。

简而言之,[_n-1] 被解释为之前的值(我刚才提到的变量)。

help subscripting提供非常基本的帮助。