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

Stata 如何编写一个算法来删除特定条件下的观察值?,stata,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
,包含以下条目:

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                   

鉴于信息不完整,这里有一些东西似乎可以满足要求。这两个断言确认变量的类型为int,并且它是非负的,或者是一个数字,或者是两个数字,其中第一个数字是1。请注意,问题的陈述并没有具体说明如果存在一个1和两个11,将会发生什么:我的解释是删除每个具有相同最终数字的观测值,只要有一对符合删除条件

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  

到目前为止,您尝试了什么代码?您的变量是字符串还是数字?(如果您不知道,请向我们展示
descripe v1
的结果)将手头的问题进一步分解成更小的问题,然后用谷歌搜索它们。你会很容易找到你的答案。谢谢,但是为什么在这里指定了每日日期格式?这些数据意味着什么?v1只是一个例子。原始数字也可以以日期格式出现。但我正在寻找一个通用的解决方案,它可以应用于任何存储类型的变量:我认为一个通用的解决方案将遵循对操作含义的解释。这对我来说一点都不直观。