我有以下数据矩阵,其中包含自定义数据集中的意识形态分数:
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)
答案 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
提供非常基本的帮助。