全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4704 5
2016-04-20
我想统计出某公司(id)在某年度(year)总共有多少人?也就是说我想统计出name变量的人数,单元格里单个人的好处理,在一个单元格中有多个人的时候不知该如何处理,因为用tab命令会把多人的情况当成一个新人,这种情况该怎么办,如下图:请指教! 图
二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-20 16:32:00
bysort id year:egen num=count(name)
二维码

扫码加我 拉你入群

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

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

2016-4-20 17:06:17
j610f2012 发表于 2016-4-20 16:32
bysort id year:egen num=count(name)
如果这样的话,name单元格中是多人的也会被计数,但实际上多人中有可能在别处已经存在,这样就可能存在重复计数
二维码

扫码加我 拉你入群

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

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

2016-4-20 17:45:39
arkfan 发表于 2016-4-20 17:06
如果这样的话,name单元格中是多人的也会被计数,但实际上多人中有可能在别处已经存在,这样就可能存在重 ...
先把有多项人的split出来
二维码

扫码加我 拉你入群

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

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

2016-4-21 08:36:28
j610f2012 发表于 2016-4-20 17:45
先把有多项人的split出来
你好,split出来之后会多出几列,但这几列依然会有重复的人名,如果对每列进行tab只能保证这一列不会有重复的人名,但不能保证各列之间无重复人名。
二维码

扫码加我 拉你入群

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

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

2024-6-26 13:52:23
在你的描述中提到的问题主要是因为`name`变量中的数据格式不是标准的个体标识符(例如每个员工拥有唯一的ID),而可能是以某种文本或列表形式存储多个员工的名字。为了统计每年度每公司的总人数,你可以考虑以下步骤:

1. **清理和转换数据**:首先,你需要将包含多名员工信息的单个`name`字段拆分为多个行。这通常可以通过使用STATA中的字符串处理函数实现,如使用`split()` 或 `tokenstr()` 等命令来根据分隔符(例如逗号、空格等)分割文本。

2. **创建新的标识符**:由于原始数据可能没有唯一的人数ID,在拆分后,你可能需要为每个新行生成一个新的员工ID。这可以通过使用`egen id = group(id year)`或类似的方法来实现,前提是你想要保持公司和年度的关联性。

3. **统计人数**:在创建了新的标识符之后,你可以通过简单的计数命令(如`tabulate` 或 `bysort` 语句)根据`id`、`year` 和其他可能需要的变量来统计人数。例如:
   ```stata
   bysort id year: gen count = _N
   ```
   这会计算每个公司每年的人数。

4. **汇总结果**:最后,你可能需要将每行的计数汇总到公司的年度级别上。这可以通过使用`collapse (sum) count, by(id year)`或类似命令来实现。

但是,在进行上述步骤之前,请确保对原始数据进行了充分的备份,以免在数据处理过程中发生意外丢失或修改。此外,根据你的具体需求和数据结构,可能还需要调整这些步骤以达到最佳效果。如果`name`字段包含的信息复杂(例如除了姓名还有其他标识符),你可能需要编写更复杂的脚本来确保正确地拆分和重新组合数据。

希望这能帮助你解决统计数据的问题!如果你有具体的STATA代码或数据示例,我可能会提供更详细的指导。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群