楼主: zyp860107
20229 10

[数据管理求助] 分类求均值并生成新变量 [推广有奖]

  • 1关注
  • 8粉丝

已卖:71份资源

讲师

78%

还不是VIP/贵宾

-

威望
0
论坛币
1187 个
通用积分
80.4733
学术水平
6 点
热心指数
10 点
信用等级
3 点
经验
10288 点
帖子
351
精华
0
在线时间
375 小时
注册时间
2009-5-3
最后登录
2025-3-1

楼主
zyp860107 在职认证  学生认证  发表于 2016-8-4 10:10:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教坛内各位大神,如何将一数据变量按分组求均值,并赋值生成新的变量,例如:
x1  x2  m1 m2 m3
8    1    7    6    3
9    1    7    6    3
4    1    7    6    3
6    2    7    6    3
4    2    7    6    3
8    2    7    6    3
5    3    7    6    3
3    3    7    6    3
2    3    7    6    3
2    3    7    6    3
将x1按x2分类求平均值,并赋值生成变量m1,m2,m3
在线等,谢谢
二维码

扫码加我 拉你入群

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

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

关键词:新变量 生成变量 在线等 平均值 求平均 平均值 在线 如何

经济是优化资源配置

沙发
xddlovejiao1314 学生认证  发表于 2016-8-4 10:18:39
bysort x2:egen new=mean(x1)。这是根据x2分组求x1的均值的命令,得到new变量,然后你把这个变量的值赋给m1就行了呗。祝好运~

藤椅
zyp860107 在职认证  学生认证  发表于 2016-8-4 10:26:40
xddlovejiao1314 发表于 2016-8-4 10:18
bysort x2:egen new=mean(x1)。这是根据x2分组求x1的均值的命令,得到new变量,然后你把这个变量的值赋给m1 ...
试过这种方法,但是只生成了新的变量new,new的取值就是分类的均值,但是怎么将new的三种值赋值生成新的变量呢,由于是大数据,不可能手动赋值

板凳
xddlovejiao1314 学生认证  发表于 2016-8-4 10:29:15
zyp860107 发表于 2016-8-4 10:26
试过这种方法,但是只生成了新的变量new,new的取值就是分类的均值,但是怎么将new的三种值赋值生成新的变 ...
我没看明白m1,m2和m3与前面x1和x2有啥关系,没法进一步帮忙诊断额。上条回复给你的命令是求x2各类的对应的x1的均值的。

报纸
zyp860107 在职认证  学生认证  发表于 2016-8-4 14:44:24
xddlovejiao1314 发表于 2016-8-4 10:29
我没看明白m1,m2和m3与前面x1和x2有啥关系,没法进一步帮忙诊断额。上条回复给你的命令是求x2各类的对应 ...
嗯,不好意思,是我没说太明白,按x2的分类对x1求均值,并把均值赋值到新的变量,当x2为1时,x1的均值是7,所以赋值新的变量m1=7;当x2为2时,x1的均值是6,所以赋值新的变量m2=6;当x2为3时,x1的均值是3,所以赋值新的变量m3=3。请问大神,如何操作

地板
xddlovejiao1314 学生认证  发表于 2016-8-4 15:04:24
zyp860107 发表于 2016-8-4 14:44
嗯,不好意思,是我没说太明白,按x2的分类对x1求均值,并把均值赋值到新的变量,当x2为1时,x1的均值是7 ...
gen m1=new if x2==1
gen m2=new if x2==2
gen m3=new if x2==3
试试如上命令。

7
zyp860107 在职认证  学生认证  发表于 2016-8-4 15:05:02
xddlovejiao1314 发表于 2016-8-4 10:29
我没看明白m1,m2和m3与前面x1和x2有啥关系,没法进一步帮忙诊断额。上条回复给你的命令是求x2各类的对应 ...
我已经解决了:
qui su x1 if x1==1
return list
gen m1=r(mean)
qui su x1 if x1==2
return list
gen m2=r(mean)
qui su x1 if x1==3
return list
gen m3=r(mean)
感觉这个方法比较笨,有没有更好的办法,大神

8
xddlovejiao1314 学生认证  发表于 2016-8-4 15:09:03
zyp860107 发表于 2016-8-4 15:05
我已经解决了:
qui su x1 if x1==1
return list
数据量大可以用循环来做。量少用这种方法就可以了。

9
zyp860107 在职认证  学生认证  发表于 2016-8-4 15:28:55
xddlovejiao1314 发表于 2016-8-4 15:09
数据量大可以用循环来做。量少用这种方法就可以了。
已经用循环解决了,非常感谢,能不能加个qq,149471823

10
想看猪跑 发表于 2022-1-10 05:38:26
zyp860107 发表于 2016-8-4 15:28
已经用循环解决了,非常感谢,能不能加个qq,149471823
怎么解决的?能告知下代码吗?或者加个qq861773973急用不胜感谢

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

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