我有一个变量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
答案 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