如何编写一个删除特定条件观察的算法?

时间:2015-08-26 16:00:41

标签: stata

我有一个变量v1,其中包含以下条目:

v1
1
2
4
11
13
5
6
7

如何删除前面1重复的每个观察?在这种情况下,我想删除1和11,但不是13,因为我们在v1中没有相应的3。

describe v1

              storage   display    value
variable name   type    format     label      variable label
-------------------------------------------------------------------------------------------------------------------------------
v1               int     %td                   

1 个答案:

答案 0 :(得分:0)

鉴于信息不完整,这里似乎做了所要求的事情。这两个断言确认变量的类型为int,并且它是非负的,并且是第一个为1的单个数字或两个数字。请注意,问题的陈述没有指定在那里发生的情况例如,1和2 11s:我的解释是删除每个具有相同最终数字的观察,只要有一对有资格删除。

clear
input int v1
1
2
4
11
13
5
6
7
11
end
assert "`: type v1'"=="int"
assert inrange(v1,0,19)
generate digit = mod(v1,10)
generate hasone = (v1-digit)==10
bysort digit (hasone): drop if hasone[_N] & !hasone[1]
sort v1
list, clean noobs

产生

v1   digit   hasone  
 2       2        0  
 4       4        0  
 5       5        0  
 6       6        0  
 7       7        0  
13       3        1