楼主: 2009091332
9956 8

[编程问题求助] Stata统计数据均值:把A列变量等距分成十份,计算相应B列的均值 [推广有奖]

  • 2关注
  • 13粉丝

副教授

17%

还不是VIP/贵宾

-

TA的文库  其他...

国际企业管理挑战赛(GMC)资料

威望
0
论坛币
14127 个
通用积分
0.1959
学术水平
84 点
热心指数
112 点
信用等级
75 点
经验
2990 点
帖子
372
精华
0
在线时间
1009 小时
注册时间
2014-5-20
最后登录
2023-11-16

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
1.png 就是这个命令,按照eng的0.5距离计算lntfp的均值。计算出的Stata结果是分开的列表,请问各位老师和前辈,使用什么样的命令可将这些命令整合为一个?同时输出结果也是一个列表?这个命令应该一定存在,可翻了半天书还是没找到。小弟先行谢过各位。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 统计数据 tata 输出结果 eng 统计

本帖被以下文库推荐

沙发
ywh19860616 发表于 2014-6-7 10:10:09 |只看作者 |坛友微信交流群
  1. clear
  2. set obs 800
  3. gen lntfp = uniform()
  4. gen eng = rnormal()
  5. cumul eng,gen(index) eq
  6. recode index (min/0.1=1)(0.1/0.2=2)(0.2/0.3=3)(0.3/0.4=4)(0.4/0.5=5)(0.5/0.6=6)(0.6/0.7=7)(0.7/0.8=8)(0.8/0.9=9)(0.9/max=10)
  7. statsby mean=r(mean), clear by(index):  summarize lntfp
复制代码

上面是十等分分组统计均值。
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 10 + 10 + 1 + 1 热心帮助其他会员
2009091332 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 10  论坛币 + 10  学术水平 + 2  热心指数 + 2  信用等级 + 1   查看全部评分

使用道具

藤椅
2009091332 在职认证  发表于 2014-6-7 10:27:00 |只看作者 |坛友微信交流群
clear
set obs 330820
gen lntfp = uniform()
gen eng = rnormal()
cumul eng,gen(index) eq
recode index (min/5=1)(5/5.5=2)(5.5/6=3)(6/6.5=4)(6.5/7=5)(7/7.5=6)(7.5/8=7)(8/8.5=8)(8.5/9=9)(9/9.5=10)(9.5/10=11)(10/10.5=12)(10.5/11=13)(11/11.5=14)(11.5/12=15)(12/12.5=16)(12.5/13=17)(13/13.5=18)(13.5/14=19)(14/14.5=20)(14.5/15=21)(15/15.5=22)(15.5/16=23)(16/16.5=24)(16.5/17=25)(17/17.5=26)(17.5/18=27)(18/max=28)
statsby mean=r(mean), clear by(index):  summarize lntfp

使用道具

板凳
2009091332 在职认证  发表于 2014-6-7 10:30:08 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-6-7 10:10
上面是十等分分组统计均值。
谢谢您的解答,我根据上面的程序和数据情况,修改了obs以及recode里面的数据,但是结果不太对,能否帮忙看看问题出在哪里?clear
set obs 330820
gen lntfp = uniform()
gen eng = rnormal()
cumul eng,gen(index) eq
recode index (min/5=1)(5/5.5=2)(5.5/6=3)(6/6.5=4)(6.5/7=5)(7/7.5=6)(7.5/8=7)(8/8.5=8)(8.5/9=9)(9/9.5=10)(9.5/10=11)(10/10.5=12)(10.5/11=13)(11/11.5=14)(11.5/12=15)(12/12.5=16)(12.5/13=17)(13/13.5=18)(13.5/14=19)(14/14.5=20)(14.5/15=21)(15/15.5=22)(15.5/16=23)(16/16.5=24)(16.5/17=25)(17/17.5=26)(17.5/18=27)(18/max=28)
statsby mean=r(mean), clear by(index):  summarize lntfp


使用道具

报纸
ywh19860616 发表于 2014-6-7 10:30:56 |只看作者 |坛友微信交流群
我给的命令是根据分位数分组的,不是具体的数值,你可以根据下面的方法。
http://www.ats.ucla.edu/stat/stata/faq/cut.htm


已有 1 人评分经验 热心指数 收起 理由
crystal8832 + 10 + 1 补偿

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

使用道具

地板
2009091332 在职认证  发表于 2014-6-7 10:38:30 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-6-7 10:30
我给的命令是根据分位数分组的,不是具体的数值,你可以根据下面的方法。
http://www.ats.ucla.edu/stat/s ...
好的,正在学习。谢谢

使用道具

7
xingxf 发表于 2014-6-7 20:43:13 |只看作者 |坛友微信交流群
感觉楼主的标题和内容描述不太一样,按照标题分组并求均值,那很方便的:
方法一:利用分组函数cut
egen group=cut(eng), group(10)
bys group: egen mean=mean(lntfp)
方法二:利用分布函数cumul和进位取整函数ceil
cumul(eng), gen(cum) equal
gen group=ceil(10*cum)
bys group: egen mean=mean(lntfp)

第一种方法cut函数比较直接,但是缺点是不能与by结合使用,楼主不涉及这个问题,但是,如果楼主的需求是基于分组后再分组,比如根据a变量分10组,再根据b变量分5组,那么cut不能和by结合使用,可以编写循环,但是循环执行效率低。
第二种方法,cumul函数可以和by结合使用,解决了第一种方法的缺陷。



已有 1 人评分经验 收起 理由
remlus + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

使用道具

8
cornercafe 发表于 2020-4-11 12:04:15 |只看作者 |坛友微信交流群
gen eng2=autocode(eng,28,4.5,18.5)
bysort eng2:summarize lntfp
先用auotocode把变量取值区间等分成28段(间隔0.5),然后再用bysort自动在每组内summarize。

使用道具

9
whr1994 学生认证  发表于 2021-11-8 11:15:59 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-6-7 10:10
上面是十等分分组统计均值。
您好,请教一下,如果想把某一变量x十等分,然后从小到大分别赋值为1-10,该如何操作呢?谢谢

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 04:29