Stata有关排序与分组

初始数据

input hhid age
hhid age
1 86
1 42
1 36
1 57
1 28
2 42
2 5
2 40
end
save family, replace

任务要求

要求
下列数据为家庭成员数据 family.dta,其中 hhid 为家庭编码, age 为家
庭成员的年龄。
1、生成一个新变量 hhsize,该变量表示共有多少个家庭成员。
2、给每个家庭成员一个编码 id。如第一个家庭的第一个成员编码为11 ;
3、按家庭生成一个全家成员平均年龄值 mage。
4、对每个家庭,分别按年龄大小排序,然后生成一个家庭成员代码,即
家庭内年龄最小的成员代码为 1 ,年龄最大的家庭成员,代码为 nid。

分析

由题意可知,布置的任务都围绕着家庭产生,而家庭在list里面就是变量hhid的不同,
就相当于是根据分组变量hhid来将该list进行各种分组排序增添新变量的操作。

命令

1、bys hhid:egen hhsize = count(hhid)

完成: 生成一个新变量 hhsize,该变量表示共有多少个家庭成员。

根据家庭编号来分组,而分组的操作需要用到命令bysort ——>(bys),
bys 后面跟的变量为分组变量 也就是说 这个分组变量值相同的实例为一组,
因此 bys hhid就已经将该list分好组了,接下开我们只需要算这个组里面由哪些成员并赋给一个新的变量hhsize即可
bys hhid: 注意: 当你在“:”后面所编写的命令 就已经是根据分组的子集合来进行的操作也可以说成子list。
注: 我看到老师ppt上教的命令是 by hhid, sort:这个命令跟bys hhid:(bysort hhid:)功能是一样的。
egen 和 gen 都用于生成新变量,但egen 的特点是它更强大的函数功能。 gen 可以支持一些函数, egen 支持额外的函数。如果用 gen 搞不定,就得用egen想办法了。
很显然因为gen没有count()方法,所以我用了egent
count()这个方法顾名思义求和,由于我们已经分好组了所以这个count(hhid)所求的hhid变量个数就是这个组里面的hhid变量个数及家庭成员个数。

2、bys hhid : gen id = hhid*10+_n

完成: 给每个家庭成员一个编码 id。如第一个家庭的第一个成员编码为11 ;

这个command的前面bys hhid: 不必再赘述,懂得都懂了,这里后面的命令要用gen 毕竟是生成变量,但是!为什么不能用egen呢,上面我也说了,egen所覆盖的函数比gen更广,但这里用不了egen,我也不知道,等我百度百度再说,或者你可以上课问问老师,(问老师比较好)。

在这里插入图片描述

由题可知,我们生成的这几个变量都是数值型变量可以进行加减乘除操作,而根据第二题的要求,十位数为hhid,个位数递增的要求,hhid*10+_n就是我们所需要的id值,_n就是数值从1开始递增,毕竟分组不同,所以当这一组操作结束完之后,下一组_n依然是从1开始递增。

3、bys hhid:egen mage = mean(age)

完成: 按家庭生成一个全家成员平均年龄值 mage。

相信看到这里 应该对上面的command不陌生了,mean()函数也是顾名思义,总年龄÷家庭成员数量

4、. sort hhid age

. bys hhid : gen nid = _n

完成: 对每个家庭,分别按年龄大小排序,然后生成一个家庭成员代码,即家庭内年龄最小的成员代码为 1 ,年龄最大的家庭成员,代码为 nid。。

先排序再赋值,仅此而已
  • 10
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Stata是一种统计分析软件,它提供了多种数据排序命令来对数据进行排序和重排。以下是一些常用的Stata数据排序命令: 1. `sort`:该命令用于按照一个或多个变量对数据进行升序排序。例如,`sort varname`将按照变量varname对数据进行排序。 2. `gsort`:该命令用于按照一个或多个变量对数据进行分组排序。与`sort`不同的是,`gsort`会保持原始数据的顺序,并在每个分组内进行排序。例如,`gsort varname`将按照变量varname对数据进行分组排序。 3. `egen`命令结合`sort`或`gsort`使用:`egen`命令可以用于创建新的衍生变量,并结合`sort`或`gsort`命令对数据进行排序。例如,`egen newvar = total(varname), by(groupvar) sort`将按照groupvar变量对数据进行分组排序,并创建一个新的变量newvar,该变量存储了每个分组内varname变量的总和。 4. `egen`命令结合`egen group()`函数使用:`egen group()`函数可以用于创建一个新的变量,该变量为数据中的观测值分配一个唯一的组标识符。结合`sort`或`gsort`命令使用,可以实现按照指定变量对数据进行排序,并为每个分组分配一个组标识符。 5. `egen`命令结合`egen rank()`函数使用:`egen rank()`函数可以用于创建一个新的变量,该变量为数据中的观测值分配一个排名。结合`sort`或`gsort`命令使用,可以实现按照指定变量对数据进行排序,并为每个观测值分配一个排名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值