折叠以另一个变量为条件的变量总和

Collapsing sum of variable conditional on another variable

我正在处理 2006 年的 CES 日记数据。我有一个文件,每个家庭在一周内购买的每件商品都有一个条目。我有以下变量

newid 户号

cost 项目的美元成本

ucc 表示项目类型的代码

我对 ucc 190111、190112、... 涵盖的餐厅支出感兴趣。我想 collapse 我的数据,所以对于每个 newid 我有家庭在一周内的餐厅支出总和。我使用了命令

 collapse (sum) cost if ucc=="190111".... , by (newid) 

但是,当没有餐厅支出并且 Stata 只是删除这些条目时,我希望为零。

对于非餐厅支出,您需要一个带有一些零的中间变量:

gen rest_exp = cond(inlist(ucc,"190111","190112"),cost,0)
collapse (sum) rest_exp, by(newid)

需要注意的是 inlist() 对字符串有 9 个可能值的约束,但您可能少于或应该 destring,在这种情况下限制为 254。您也可以与 |.

一起搭便车 inlist()