楼主: lpchxj
10317 13

[数据管理求助] 如何利用stata求条件均值 [推广有奖]

  • 3关注
  • 5粉丝

已卖:437份资源

教授

56%

还不是VIP/贵宾

-

威望
0
论坛币
41 个
通用积分
8.9518
学术水平
6 点
热心指数
14 点
信用等级
1 点
经验
4143 点
帖子
310
精华
0
在线时间
2280 小时
注册时间
2006-12-3
最后登录
2025-4-24

楼主
lpchxj 发表于 2011-5-29 17:55:40 |AI写论文
10论坛币
我有一个大文件,基本格式如下
code     time               x
1       20000101         21
1       20000102         32
1       20000129         333
1       20000205         56
1       20000207         12
1       20000301         201
1       20000302         34
1       20000329         33
1       20000405         57
1       20000407         12
2       20000101         21
2       20000102         32
2       20000129         104
2       20000205         56
2       20000207         132
2       20000301         21
2       20000302         34
2       20000329         33
2       20000405         527
2       20000407         12
code表示公司代码,time表示交易日期,x是一个变量。我的要求是计算x平均值:各个股票每一个月x的平均值。如果样本小我可以逐一计算,但样本太大,逐一计算时间耗不起,我看到stata中统计均值可以用if语句,那么我这个问题可否用简洁的if语句计算出结果来?并要求将结果直接放入一个变量中。您若知道,请多指导。10个币送给您!感谢您!
本文来自: 人大经济论坛 stata上传下载区 版,详细出处参考:https://bbs.pinggu.org/viewthread.php?tid=1108459&page=1&from^^uid=211087

最佳答案

sungmoo 查看完整内容

*对原始数据使用: g mon=int(time/100) collapse m=x, by(code mon)
关键词:Stata 条件均值 tata pinggu thread 如何 2011

沙发
sungmoo 发表于 2011-5-29 17:55:41
lpchxj 发表于 2011-5-30 09:09 能不能将重复的m值只留一个,其余删除,即每个股票每月就一个平均数?想得到下面的简洁结果
code         mon                 m
1              200001           128.6667
1             200002               34
*对原始数据使用:

g mon=int(time/100)
collapse m=x, by(code mon)
已有 1 人评分经验 热心指数 收起 理由
SpencerMeng + 80 + 1 热心帮助其他会员

总评分: 经验 + 80  热心指数 + 1   查看全部评分

藤椅
sungmoo 发表于 2011-5-29 19:28:13
lpchxj 发表于 2011-5-29 17:55 time表示交易日期
time是什么类型的?

板凳
lpchxj 发表于 2011-5-29 20:14:07
数值,我不知道怎么转换为时间格式

报纸
sungmoo 发表于 2011-5-29 21:36:45
lpchxj 发表于 2011-5-29 17:55
code     time               x
1       20000101         21
1       20000102         32
1       20000129         333
2       20000101         21
2       20000102         32
2       20000129         104
code表示公司代码,time表示交易日期,x是一个变量。我的要求是计算x平均值:各个股票每一个月x的平均值。
g mon=int(time/100)
bys code mon: egen m=mean(x)

地板
天涯在何方 发表于 2011-5-29 23:38:03
sungmoo 发表于 2011-5-29 21:36
lpchxj 发表于 2011-5-29 17:55
code     time               x
1       20000101         21
1       20000102         32
1       20000129         333
2       20000101         21
2       20000102         32
2       20000129         104
code表示公司代码,time表示交易日期,x是一个变量。我的要求是计算x平均值:各个股票每一个月x的平均值。
g mon=int(time/100)
bys code mon: egen m=mean(x)
sungmoo 不愧为stata版的诸葛,呵呵
We are what we eat, you are what you think.

7
lpchxj 发表于 2011-5-30 09:09:38
sungmoo 发表于 2011-5-29 21:36
lpchxj 发表于 2011-5-29 17:55
code     time               x
1       20000101         21
1       20000102         32
1       20000129         333
2       20000101         21
2       20000102         32
2       20000129         104
code表示公司代码,time表示交易日期,x是一个变量。我的要求是计算x平均值:各个股票每一个月x的平均值。
g mon=int(time/100)
bys code mon: egen m=mean(x)
非常感谢您。程序很好用!但还有一个小问题,就是计算出来的平均数m中有很多重复,即按您程序结果如下:
code                         time              x           mon                 m
1                          20000101         21       200001           128.6667
1                          20000102        32        200001           128.6667
1                          20000129       333       200001            128.6667
1                          20000205       56         200002               34
1                          20000207       12        200002                34
..............................
那么,能不能将重复的m值只留一个,其余删除,即每个股票每月就一个平均数?想得到下面的简洁结果
code         mon                 m
1              200001           128.6667
1             200002               34
.........

8
floydgyf 在职认证  发表于 2011-6-1 13:02:37
使用collapse命令,具体操作看help!

9
kevin0815 在职认证  发表于 2011-12-9 10:44:44
sungmoo 发表于 2011-5-29 21:36
g mon=int(time/100)
bys code mon: egen m=mean(x)
您好,我想请教一个问题:
number  gender      age      income       X
1              0               18        2300       ?
2              0               25        3100        ?
3              1               47        5100        ?
4              0               74        500   ?
5              1                41       3200  ?
6              0               24        2400  ?
...             ...           ...
其中,number是样本序号,gender指示性别,age是年龄,income 是收入。我现在想求收入的平均数x,满足的条件是:同性别、年龄相差在5岁以内。
请教如何写命令?关键是我不知道年龄相差5岁以内怎么处理?
灰常感激!

10
sungmoo 发表于 2011-12-9 13:50:42
“关键是我不知道年龄相差5岁以内怎么处理?”
“相差5 岁以内”是什么含义?30、35、40,这里怎么算?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 01:02