3361 6

[数据管理求助] stata 如何将某值赋给组内其他 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
1494 个
通用积分
43.6731
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
282 点
帖子
27
精华
0
在线时间
232 小时
注册时间
2019-7-7
最后登录
2025-1-21

楼主
萌萌的窗边的小豆豆 发表于 2021-12-11 23:13:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,我现在有如下数据:float time str18 姓名工号 str21 职务 double 应发工资
2016m1 "陈志慧100079" "技术员"  6135
2016m2 "陈志慧100079" "主任"     6650
2016m5 "陈志慧100079" "主任"     5990
2016m6 "陈志慧100079" "主任"     6390
2016m8  "陈志慧100079" "主任"     7075
2016m2 "吴兆兄100230" "组长"  8980
2016m3 "吴兆兄100230" "组长"  9685
2016m6 "吴兆兄100230" "组长"  9595
2016m9 "吴兆兄100230" "工场长" 10120





现在想生成变量“职务2016m2”,即2016m2时候的职务。
也就是生成:
time         姓名工号          职务    应发工资   职务2016m2
2016m1 "陈志慧100079" "技术员"  6135   "主任"
2016m2 "陈志慧100079" "主任"     6650   "主任"
2016m5 "陈志慧100079" "主任"     5990   "主任"
2016m6 "陈志慧100079" "主任"     6390   "主任"
2016m8  "陈志慧100079" "主任"     7075  "主任"
2016m2 "吴兆兄100230" "组长"  8980     "组长"
2016m3 "吴兆兄100230" "组长"  9685     "组长"
2016m6 "吴兆兄100230" "组长"  9595     "组长"
2016m9 "吴兆兄100230" "工场长" 10120  "组长"


类似的还想生成.职务2016m6,职务2016m9等等
请问应该怎么写代码呢?

二维码

扫码加我 拉你入群

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

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

关键词:Stata tata double float time stata

沙发
DΘstinyじò 发表于 2021-12-12 13:32:25
尝试以下代码
  1. local timelist  "2016m2 2016m6 2016m9"
  2. foreach v in  `timelist' {
  3. gen 职务`v'=职务 if time=="`v'"
  4. bys 姓名工号 (职务`v') : replace 职务`v'=职务`v'[_N]
  5. }
  6. sort 姓名工号 time
复制代码

但最终结果使得数据结构变得有点乱了,time变量值和新的变量之间没有清楚的逻辑关系。
或许是想长宽数据转换?(个人理解)
试一下:
  1. reshape  wide 职务 应发工资,i(姓名工号) j(time)
复制代码

藤椅
萌萌的窗边的小豆豆 发表于 2021-12-14 10:16:22
DΘstinyじò 发表于 2021-12-12 13:32
尝试以下代码

但最终结果使得数据结构变得有点乱了,time变量值和新的变量之间没有清楚的逻辑关系。
感谢!之前没意识到是在做长宽数据转换,豁然开朗。
还想追问一下,用reshape wide ,显示command reshape wide is unrecognized 是什么原因呢?(检查过了并不是 i 和 j 不能唯一识别的问题。)

板凳
萌萌的窗边的小豆豆 发表于 2021-12-14 10:29:10
萌萌的窗边的小豆豆 发表于 2021-12-14 10:16
感谢!之前没意识到是在做长宽数据转换,豁然开朗。
还想追问一下,用reshape wide ,显示command resha ...
好像知道了,是因为还有其他的变量也在随时间变化。
做这个的目的是比较同一个人前一个月到本月的职务是否发生变化,从而做一些描述性的统计,诸如:
     每个月从岗位1调动到岗位2的人数有多少。
     以及发生了调动的人,他们的平均工资是多少。

报纸
DΘstinyじò 发表于 2021-12-14 13:04:28
萌萌的窗边的小豆豆 发表于 2021-12-14 10:16
感谢!之前没意识到是在做长宽数据转换,豁然开朗。
还想追问一下,用reshape wide ,显示command resha ...
是不是直接点的复制代码运行的命令?
手动复制代码,或者浏览器兼容模式下点击复制代码(可能是这个原因)

地板
DΘstinyじò 发表于 2021-12-14 13:05:57
萌萌的窗边的小豆豆 发表于 2021-12-14 10:29
好像知道了,是因为还有其他的变量也在随时间变化。
做这个的目的是比较同一个人前一个月到本月的职务是 ...
想实现你的处理,尝试以下代码:
  1. bys 姓名工号(time): gen 职务_上期=职务[_n-1]
  2. bys time 职务 职务_上期: egen 应发工资_a=mean(应发工资)  if 职务~=职务_上期 & 职务_上期~=""
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

7
萌萌的窗边的小豆豆 发表于 2021-12-14 18:01:31
DΘstinyじò 发表于 2021-12-14 13:05
想实现你的处理,尝试以下代码:
太赞了,谢谢!
试了reshape也可以了~

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

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