Stata 中的条件均值

发布于 2024-08-07 12:48:53 字数 348 浏览 4 评论 0原文

假设我有一个 Stata 数据集,它有两个变量:typeprice。每个观察值的 type 值是 1 到 10 之间的数字。

我想添加第三个值,即该 type< 的所有变量的平均 price /代码>。因此,例如,如果第一个观察的 type 为 3,price 为 10,那么我想添加第三个值,即平均值 type=3 的所有观测值的 >price

我怎样才能在 Stata 中做到这一点?

Let's say I have a Stata dataset that has two variables: type and price. The type value for each observation is a number between 1 and 10.

I want to add a third value that is the average price of all variables of that type. So, for example, if the first observation had a type of 3 and a price of 10, then I'd like to add a third value that is the average price of all observations with type=3.

How can I do this in Stata?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

墨小墨 2024-08-14 12:48:53

这是一种更简单、更高效的不同方法。如果您有一个大型数据集,这将比 aTron 建议的多步循环更快,并且这种方法会适应“类型”变量范围的变化(如果您的数据集大小发生变化,您不必返回代码并更改 forvalues 命令中的范围)。

1) 创建一个假数据集

clear
input type price
1 1000
2 3200
3 5000
4 1200
5 1000
1 4000
2 2000
3 4000
4 1200
5 2000
end

2) 按类型生成平均价格

bysort type: egen meanprice = mean(price)

li type price meanprice, sepby(type) 

Here's a different approach that is more simple and efficient. If you've got a large dataset, this will be faster than the multi-step loop aTron suggested and this approach adapts to changes in the range of your "type" variable (if your dataset changes in size, you don't have to go back through your code and change the range in the forvalues command).

1) Create a fake dataset

clear
input type price
1 1000
2 3200
3 5000
4 1200
5 1000
1 4000
2 2000
3 4000
4 1200
5 2000
end

2) Generate the average price by type

bysort type: egen meanprice = mean(price)

li type price meanprice, sepby(type) 
浅忆 2024-08-14 12:48:53

可能有几种方法可以做到这一点,但这就是我的建议。

gen newvar = .
forvalues i = 1/10 {

  qui sum price if type == `i', meanonly
  replace newvar = r(mean) if type == `i'

}

There are probably a few ways to do this but this is what I'd suggest.

gen newvar = .
forvalues i = 1/10 {

  qui sum price if type == `i', meanonly
  replace newvar = r(mean) if type == `i'

}

一紙繁鸢 2024-08-14 12:48:53

您可以使用以下方法创建方法

by type: egen conditional_mean = mean(price)

You can create the means with

by type: egen conditional_mean = mean(price)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文