STATA 查詢連續3年以上缺失的資料

2021-10-16 12:21:35 字數 1449 閱讀 2799

** 查詢連續3年以上缺失的資料

clear

************生成資料

input id year

1 2010

1 2020

2 2012

2 2020

3 2010

3 2020

4 2010

4 2020

endxtset id year

tsfill

by id :gen aaa = 100+[_n-1]

// 1缺失連續3年資料

drop if (year == 2016|year == 2017|year == 2018)&id == 1

// 2缺失連續4年資料

drop if (year == 2015|year == 2016|year == 2017|year == 2018)&id == 2

// 3缺失連續2年資料

drop if (year == 2012|year == 2013|year == 2017|year == 2018)&id == 3

// 4缺失頭尾2年資料

drop if (year == 2010|year == 2011|year == 2019|year == 2020)&id == 4

*************查詢連續3年以上缺失的資料

// 填充完整時間序列

xtset id year

tsfill,full

******法一

// 識別缺失值

gen tag1 = (aaa ==.)

// 按id tag分組

// ssc install spell

spell tag1, by(id)

bys id: egen tag2 = max(tag*_seq)

// tag=0表示該id不存在連續三年缺失,tag=1表示存在連續3年缺失

gen tag = (tag2 >= 3)

// id=1和id=2連續3年以上缺失

tab id if tag ==1

// ******法二

// // 識別缺失值

// gen tag1 = (aaa ==.)

// // ssc install rangestat

// rangestat (sum)tag1, interval(year -2 0) by(id)

// // tag2為連續缺失的年份數,最大為3

// bys id: egen tag2 = max(tag1*tag1_sum)

// // tag=0表示該id不存在連續三年缺失,tag=1表示存在連續3年缺失

// gen tag = (tag2 >= 3)

// // id=1和id=2連續3年以上缺失

// tab id if tag ==1

oracle查詢連續編號中缺失的編號

思路 1.可以通過connect by level方法查詢出所有1000 最大編號之間的所有編號 2.通過oracle關聯查詢出所有不存在的編號 3.查詢前n條編碼返回到後台使用即可 select a.ln from select tmp1.ln from select level ln from ...

任意一串數字,取3位或以上的連續遞增的數字

在群裡出的乙個題 任意一串數字,取3位或以上的連續遞增的數字。比如 123964664567891224644567646789 結果應該是123,456789,4567,6789 我的比較二的方法 var get function re else 將獲取到的連續遞的數存到re re.push p ...

MySQL試題之查詢連續出現3次的數字

查詢連續出現3次的數字 id num 1 1 2 1 3 1 4 2 5 1 6 2 7 2 8 3 9 3 10 3 11 3 自連線查詢 自連線 將data分別命名表1,2,3 1表的第i個值與2表的第i 1個值,3表的第i 2個值橫向拼接,若一行三個值相同,這個值就連續出現了三次。若查詢出現四...