如果 byte int long float double 则折叠

Collapse if byte int long float double

在 Stata 的数据集中,我想折叠所有数值变量 (byte int long float double)。

首先,我尝试了以下方法:

collapse _all, by(countryyear)

这不起作用,因为它也试图折叠 countryyear

接下来,我修改了我的代码如下:

collapse S001 - country, by (countryyear)
type mismatch
r(109);

但是,我得到了一个错误,我认为这是因为并非所有变量都是数字的。

我还考虑过向 collapse 添加一个 if 限定符,如下所示:

collapse _all if type==byte int long float double, by(countryyear)

我该如何解决这个问题?

您当然可以在 collapse 中添加 if 限定符。这是记录在案的。但是,您的特殊情况离合法还有很长的路要走。我建议采用不同的策略:

ds, has(type numeric)  
local numeric `r(varlist)' 
local byvar countryyear 
local numeric : list numeric - byvar 
collapse `numeric', by(countryyear)