Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stata-计算组中除当前观察外所有人的平均值_Stata - Fatal编程技术网

Stata-计算组中除当前观察外所有人的平均值

Stata-计算组中除当前观察外所有人的平均值,stata,Stata,我想计算我所在小组所有成员的平均数,但不包括我自己在内。假设组变量被称为group,我想通过group取val1的平均值,不包括我自己。我想创建的新专栏是avg。数据如下所示(输入了正确的avg值,以便您了解我的意思) 如果我想把自己包括在计算中,那就很简单了。我只想: bysort Group: egen avg = mean(val1) 但是我如何用我不包括自己的皱纹来实现这一点呢?一种方法是循环所有观察结果: clear set more off *----- example data

我想计算我所在小组所有成员的平均数,但不包括我自己在内。假设组变量被称为
group
,我想通过
group
val1
的平均值,不包括我自己。我想创建的新专栏是
avg
。数据如下所示(输入了正确的
avg
值,以便您了解我的意思)

如果我想把自己包括在计算中,那就很简单了。我只想:

bysort Group: egen avg = mean(val1)

但是我如何用我不包括自己的皱纹来实现这一点呢?

一种方法是循环所有观察结果:

clear
set more off

*----- example data -----

input ///
Obs   str1 Group   val1    avg
1     A       6       8
2     A       8       6
3     B       10      13
4     C       4       4
5     C       2       5
6     C       6       3
7     B       12      12
8     B       14      11
end

list, sepby(Group)

*----- what you want -----

encode Group, gen(group)

gen avg2 = .

forvalues j = 1/`=_N' {

    summarize val1 if group == group[`j'] & _n != `j', meanonly              
    replace avg2 = r(mean) in `j'
}

list, sepby(group)
另一种方法是使用
egen
函数:

<snip>    

*----- what you want -----

encode Group, gen(group)

bysort group: egen totval = total(val1)
by group: egen cval = count(val1)
generate avg2 = (totval - val1) / (cval - 1)

list, sepby(group)

*-----你想要什么-----
编码组,gen(组)
bysort组:egen totval=总计(val1)
按组:egen cval=计数(val1)
生成avg2=(totval-val1)/(cval-1)
秘书长(小组)名单
网上有一篇很好的文章介绍了这个主题:

《国家统计局杂志》(2014年) 14,第2号,第432-444页, 发言状态:自我和他人,由
尼古拉斯·J·考克斯。

一种方法是循环所有观察结果:

clear
set more off

*----- example data -----

input ///
Obs   str1 Group   val1    avg
1     A       6       8
2     A       8       6
3     B       10      13
4     C       4       4
5     C       2       5
6     C       6       3
7     B       12      12
8     B       14      11
end

list, sepby(Group)

*----- what you want -----

encode Group, gen(group)

gen avg2 = .

forvalues j = 1/`=_N' {

    summarize val1 if group == group[`j'] & _n != `j', meanonly              
    replace avg2 = r(mean) in `j'
}

list, sepby(group)
另一种方法是使用
egen
函数:

<snip>    

*----- what you want -----

encode Group, gen(group)

bysort group: egen totval = total(val1)
by group: egen cval = count(val1)
generate avg2 = (totval - val1) / (cval - 1)

list, sepby(group)

*-----你想要什么-----
编码组,gen(组)
bysort组:egen totval=总计(val1)
按组:egen cval=计数(val1)
生成avg2=(totval-val1)/(cval-1)
秘书长(小组)名单
网上有一篇很好的文章介绍了这个主题:

《国家统计局杂志》(2014年) 14,第2号,第432-444页, 发言状态:自我和他人,由
尼古拉斯·J·考克斯。

请查看现有资源。这是一个自2001年以来的常见问题解答(),因此可以通过
搜索
找到答案。问题和答案与排序无关,因此标记已删除。请参阅关于查看现有资源的相同点…请尝试查看现有资源。这是自2001年以来的常见问题解答(),因为这样的答案可以通过
搜索
找到。问题和答案与排序没有关系,因此标记被删除。关于查看现有资源,请参阅相同的一点……关键是,每一个其他值的平均值是(总计-此值)/(计数-1),但遗漏会使这一点复杂化,所以要小心。关键是其他每个值的平均值是(所有值的总和)/(所有值的计数-1),但是遗漏会使这变得复杂,所以要小心。