jzhyue 发表于 2010-9-14 11:22
1# 天涯在何方
*看是否合要求
bys COUN VILL :egen t=total(trust)
bys COUN VILL :gen tmean=(t-trust)/(_N-1)
ctx5518 发表于 2010-9-14 11:41
levelsof HOUS, local(household)
foreach x of local household {
gen trust2= trust
replace trust2 = . if HOUS == `x'
by COUN VILL: egen trustmean`x' = mean(trust2)
drop trust2
}
天涯在何方 发表于 2010-9-14 12:06佩服佩服。也感谢jzhyue的解答,我本来和您是一样的想法,但这位兄台的命令也很有道理。特奉上统计描述,以供大家比较。ctx5518 发表于 2010-9-14 11:41
levelsof HOUS, local(household)
foreach x of local household {
gen trust2= trust
replace trust2 = . if HOUS == `x'
by COUN VILL: egen trustmean`x' = mean(trust2)
drop trust2
}
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
trustmean1 | 9195 3.513549 .8065215 1 5
tmean | 9194 3.518055 .8044878 1 5
trust | 9194 3.51849 1.323353 1 5
jzhyue 发表于 2010-9-14 15:48*按照ctx5518的思路天涯在何方 发表于 2010-9-14 12:06佩服佩服。也感谢jzhyue的解答,我本来和您是一样的想法,但这位兄台的命令也很有道理。特奉上统计描述,以供大家比较,从样本数目来看,9194是和原样本一致的。ctx5518 发表于 2010-9-14 11:41
levelsof HOUS, local(household)
foreach x of local household {
gen trust2= trust
replace trust2 = . if HOUS == `x'
by COUN VILL: egen trustmean`x' = mean(trust2)
drop trust2
}
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
trustmean1 | 9195 3.513549 .8065215 1 5
tmean | 9194 3.518055 .8044878 1 5
trust | 9194 3.51849 1.323353 1 5
levelsof HOUS, local(household)
gen ttmean=.
foreach x of local household {
gen trust2= trust
replace trust2 = . if HOUS == `x'
by COUN VILL: egen trustmean`x' = mean(trust2)
drop trust2
replace ttmean=trustmean`x' if HOUS == `x'
}
drop trustmean*
天涯在何方 发表于 2010-9-14 16:14jzhyue 发表于 2010-9-14 15:48天涯在何方 发表于 2010-9-14 12:06我想应这样统计:ctx5518 发表于 2010-9-14 11:41
谢谢,这回我把这个命令输入,得到第一种思路和第二种思路的描述统计,他们虽然不一致,但是很接近了。
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
ttmean | 9195 3.518543 .8046014 1 5
tmean | 9194 3.518055 .8044878 1 5
sum if trust~=.
Variable Obs Mean Std. Dev. Min Max trust 9194 3.51849 1.323353 1 5 ttmean 9194 3.51849 .8046295 1 5 tmean 9194 3.51849 .8046295 1 5
jzhyue 发表于 2010-9-14 16:50
*问题的关键是trust是否有缺失值,而你的数据就有一个:下面排除缺失值(同6楼)
bys COUN VILL :egen t=total(trust)
bys COUN VILL :egen tn=count(trust)
gen tmean=(t-trust)/(tn-1)
sum if trust~=.
*如果将缺失值作为观察值之一,下面比较合理(因为没有删除缺失值,而上面的方法与6楼的方法都不考虑缺失值)
bys COUN VILL :egen t=total(trust)
bys COUN VILL :gen tmean=(t-trust)/(_N-1)
扫码加好友,拉您进群



收藏