查找出来,如果在特定月份中存在的变量值

问题描述 投票:2回答:1

我有以下数据:

dataex

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(fooid foodate foovar1 foovar2)
0 21283 1 0
0 21260 0 0
0 21247 1 1
0 21236 0 0
0 21195 0 1
1 21246 0 0
1 21256 0 0
1 21211 0 0
1 21229 1 0
1 21228 0 0
end
format %td foodate

我想知道在一个月内是否存在特定foovar值。我想只有每月一次观测,每foovar只有一个值。

下面是我的预期结果如下:

  fooid  foodate    foovar1   foovar2  
    0     month1       0         1  
    0     month2       0         0  
    0     month3       1         1  
    0     month4       1         0  
    1     month1       0         0  
    1     month2       1         0  
    1     month3       0         0  
    1     month4       0         0  
stata
1个回答
1
投票

你可以用collapsefillin命令很容易做到这一点:

generate foodate2 = mofd(foodate) 

collapse (sum) foovar1 foovar2, by(fooid foodate2) 
fillin fooid foodate2
drop _fillin 

forvalues i = 1 / 2 {
    replace foovar`i' = cond(missing(foovar`i'), 0, foovar`i' > 0)
}

format %tm foodate2
list, sepby(fooid)

     +--------------------------------------+
     | fooid   foodate2   foovar1   foovar2 |
     |--------------------------------------|
  1. |     0     2018m1         0         1 |
  2. |     0     2018m2         0         0 |
  3. |     0     2018m3         1         1 |
  4. |     0     2018m4         1         0 |
     |--------------------------------------|
  5. |     1     2018m1         0         0 |
  6. |     1     2018m2         1         0 |
  7. |     1     2018m3         0         0 |
  8. |     1     2018m4         0         0 |
     +--------------------------------------+

需要注意的是collapse会破坏内存中的数据集。

© www.soinside.com 2019 - 2024. All rights reserved.