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只是一个例子。原始数字也可以以日期格式出现。但我正在寻找一个通用的解决方案,它可以应用于任何存储类型的变量:我认为一个通用的解决方案将遵循对操作含义的解释。这对我来说一点都不直观。