变量列表的均值和标准差

Means and SDs of a list of variables

我在 Stata 中有以下代码,我正在尝试将其转换为 python

    foreach var in income_pc_r income_village_pc_r income_migration exp_total_pc_r sav_cash12_any_r sav_cash12_amtcon_pc_r anygorl_r_ffv gorl_r_ffv_condamt anygorl_g_ffv gorl_g_ffv_condamt hhsize_r migrant_r {   if inlist("`var'","income_pc_r","income_village_pc_r","income_migration","exp_total_pc_r","savelast12mo_condamt","gorl_r_ffv_condamt","gorl_g_ffv_condamt") {       
qui sum `var', det      
local mean=string(r(mean),"%10.0f")         
local sd  =string(r(sd),  "%10.0f")         
qui sum `var' if treat==0, det      
local meanc=string(r(mean),"%10.0f")        
local sdc  =string(r(sd),  "%10.0f")        
qui sum `var' if treat==1, det      
local meant=string(r(mean),"%10.0f")        
local sdt  =string(r(sd),  "%10.0f")        
file write ofile " `label`var'' & `mean' & `meanc' & `meant' \" _n ///
                             "              & (`sd') & (`sdc') & (`sdt') \" _n     }   else {      
qui sum `var', det      
local mean=string(r(mean),"%10.2f")         
local sd =string(r(sd),  "%10.2f")      
qui sum `var' if treat==0, det      
local meanc=string(r(mean),"%10.2f")        
local sdc  =string(r(sd),  "%10.2f")        
qui sum `var' if treat==1, det      
local meant=string(r(mean),"%10.2f")        
local sdt  =string(r(sd),  "%10.2f")        
file write ofile " `label`var'' & `mean' & `meanc' & `meant' \" _n ///
                             "              & (`sd') & (`sdc') & (`sdt') \" _n     }        }

Stata 在计算每个变量的均值和 SD 时是否只采用那些观察值,所有变量都具有非空值?还是单独处理每个变量?

在此代码中,每个变量都被单独处理,因此无论其他变量的同一观察中是否存在缺失值,计算中都会包含一个 non-missing 值。

这不是你的目的,但可以简化。

  1. quietly只能说一次,不可重复。

  2. summarize 本身产生均值和 SD; detail 选项有点矫枉过正。

  3. 只需要一个file write语句。

我不能测试这个重写。

quietly foreach var in income_pc_r income_village_pc_r income_migration exp_total_pc_r sav_cash12_any_r sav_cash12_amtcon_pc_r anygorl_r_ffv gorl_r_ffv_condamt anygorl_g_ffv gorl_g_ffv_condamt hhsize_r migrant_r {   

if inlist("`var'","income_pc_r","income_village_pc_r","income_migration","exp_total_pc_r","savelast12mo_condamt","gorl_r_ffv_condamt","gorl_g_ffv_condamt") {       
    sum `var'     
    local mean=string(r(mean),"%10.0f")         
    local sd  =string(r(sd),  "%10.0f") 
        
    sum `var' if treat==0     
    local meanc=string(r(mean),"%10.0f")        
    local sdc  =string(r(sd),  "%10.0f")    
    
    sum `var' if treat==1    
    local meant=string(r(mean),"%10.0f")        
    local sdt  =string(r(sd),  "%10.0f")      
}   

else {      
    sum `var'     
    local mean=string(r(mean),"%10.2f")         
    local sd  =string(r(sd),  "%10.2f")      

    sum `var' if treat==0    
    local meanc=string(r(mean),"%10.2f")        
    local sdc  =string(r(sd),  "%10.2f")   
     
    sum `var' if treat==1     
    local meant=string(r(mean),"%10.2f")        
    local sdt  =string(r(sd),  "%10.2f")  
} 
      
file write ofile " `label`var'' & `mean' & `meanc' & `meant' \" _n ///
                             "              & (`sd') & (`sdc') & (`sdt') \" _n     

}