0

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

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] 

我的尝试是一个条件参数,如果:年份与下一次观察相同,statenum 与下一次观察相同,cdnum 与下一次观察相同,则放弃观察。这样,我可以确保每个地区在给定年份中只有一个对应的。当我尝试运行代码时,我得到:

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

1 回答 1

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

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

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

于 2014-11-14T10:30:39.590 回答