在stata中创建完整数据

时间:2017-12-12 00:38:49

标签: stata

我有以下购买数据

clear 
input id productid purchase
1     1         1
2     1         1
3     2         1
1     3         1
end

我想为每个id-productid组合添加一行来创建以下数据集

id productid purchase
1     1         1
2     1         1
3     1         0
1     2         0
2     2         0
3     2         1
1     3         1
2     3         0
3     3         0
end

我尝试了很多无效的方法。这是我最新的。

qui sum id, d
local obs = r(N) 
expand = `obs'
levelsof productid, local(id)
local j = 1
foreach i of local id {
    replace productid = `i' if `j' == id
    local j = `j' + 1
}

1 个答案:

答案 0 :(得分:0)

fillin命令(请参阅help fillin)是此任务的工具。

从内存中的示例数据开始:

fillin id productid
replace purchase = 0 if _fillin
drop _fillin
sort productid id
list, sepby(productid) abbreviate(12)

产生

     +---------------------------+
     | id   productid   purchase |
     |---------------------------|
  1. |  1           1          1 |
  2. |  2           1          1 |
  3. |  3           1          0 |
     |---------------------------|
  4. |  1           2          0 |
  5. |  2           2          0 |
  6. |  3           2          1 |
     |---------------------------|
  7. |  1           3          1 |
  8. |  2           3          0 |
  9. |  3           3          0 |
     +---------------------------+