楼主: zhushji
6617 9

[编程问题求助] stata 按唯一标识码追踪合并不同年份数据问题 [推广有奖]

  • 0关注
  • 2粉丝

已卖:621份资源

博士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
2824 个
通用积分
3.7251
学术水平
1 点
热心指数
4 点
信用等级
0 点
经验
4309 点
帖子
171
精华
0
在线时间
515 小时
注册时间
2008-10-30
最后登录
2025-12-23

楼主
zhushji 发表于 2018-5-31 09:51:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
救助各位:我想按2009(初始年)的医保号(唯一标识)追踪这些患者在接下来的2010-2014年的住院记录,并纵向合并,如何实现?
如,2009年的住院数据可能为
医保号性别年龄总费用....
135851453577....
135851454325....
123462657432....
235691348653....
654322688532....


2010年的住院数据可能为
医保号性别年龄总费用....
135851468854....
196321537777....
123462667432....
1234626695555....
164562334333....
等等2011年、2012年

其复杂性和要求:(1)同一患者在不同年份可能不止发生一次住院,这些记录都要保留。如2009年医保号为12346的患者发生一次住院,在2010年发生两次住院,这两次住院记录都要追踪匹配到。
最终想要得到的数据形式为:
year医保号性别年龄总费用....
2009135851453577....
2009135851454325....
2010135851468854....
2009123462657432....
2010123462667432....
20101234626695555....


二维码

扫码加我 拉你入群

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

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

关键词:住院数据 不同年份 纵向合并 如何实现 数据形式

回帖推荐

黃河泉 发表于9楼  查看完整内容

现在知道你要的了!接续上述程序 (你可能需要先 ssc install egenmore),试试可得

沙发
黃河泉 在职认证  发表于 2018-5-31 10:46:19
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

藤椅
黃河泉 在职认证  发表于 2018-5-31 10:48:04
基本上,应该是在两个档案中分别产生
  1. gen year = 2009

  2. gen year = 2010
复制代码
然后利用 append 后 sort 医保号 year 即可。

板凳
zhushji 发表于 2018-5-31 10:56:37
黃河泉 发表于 2018-5-31 10:48
基本上,应该是在两个档案中分别产生然后利用 append 后 sort 医保号 year 即可。
谢谢,append仅仅是文件合并,而不是按标识号追踪,追踪的结果是同一标识号在各个年份都存在且不是唯一存在

报纸
黃河泉 在职认证  发表于 2018-5-31 11:30:20
zhushji 发表于 2018-5-31 10:56
谢谢,append仅仅是文件合并,而不是按标识号追踪,追踪的结果是同一标识号在各个年份都存在且不是唯一存 ...
我不是看得很懂你在讲什么?但我的建议可以得到你上面想要的结果。
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(医保号 性别 年龄 总费用)
  4. 13585 1 45 3577
  5. 13585 1 45 4325
  6. 12346 2 65 7432
  7. 23569 1 34 8653
  8. 65432 2 68 8532
  9. end

  10. gen year = 2009

  11. tempfile a
  12. save `a'

  13. * Example generated by -dataex-. To install: ssc install dataex
  14. clear
  15. input float(医保号 性别 年龄 总费用)
  16. 13585 1 46  8854
  17. 19632 1 53  7777
  18. 12346 2 66  7432
  19. 12346 2 66 95555
  20. 16456 2 33  4333
  21. end

  22. gen year = 2010
  23. append using `a'

  24. order year
  25. sort 医保号 year
复制代码

地板
黃河泉 在职认证  发表于 2018-5-31 11:31:09
zhushji 发表于 2018-5-31 10:56
谢谢,append仅仅是文件合并,而不是按标识号追踪,追踪的结果是同一标识号在各个年份都存在且不是唯一存 ...
  1. . list, sep(0)

  2.      +--------------------------------------+
  3.      | year   医保号   性别   年龄   总费用 |
  4.      |--------------------------------------|
  5.   1. | 2009    12346      2     65     7432 |
  6.   2. | 2010    12346      2     66     7432 |
  7.   3. | 2010    12346      2     66    95555 |
  8.   4. | 2009    13585      1     45     4325 |
  9.   5. | 2009    13585      1     45     3577 |
  10.   6. | 2010    13585      1     46     8854 |
  11.   7. | 2010    16456      2     33     4333 |
  12.   8. | 2010    19632      1     53     7777 |
  13.   9. | 2009    23569      1     34     8653 |
  14. 10. | 2009    65432      2     68     8532 |
  15.      +--------------------------------------+
复制代码

7
zhushji 发表于 2018-5-31 13:35:02
黃河泉 发表于 2018-5-31 11:31
谢谢您用stata做出您的解法,但我想要的结果是两年内都有住院记录的患者,而删除那些只在一年中有住院记录的患者,如2009年医保号为65432的患者,在2010年没有住院记录;或者2010年医保号为19632的患者在2009年没有住过院,这两种情况均属于无法持续追踪,都要删除。而您用append的结果是不删除任何记录,而是简单的两个数据库合并

8
zhushji 发表于 2018-5-31 13:35:22
黃河泉 发表于 2018-5-31 11:31
谢谢您用stata做出您的解法,但我想要的结果是两年内都有住院记录的患者,而删除那些只在一年中有住院记录的患者,如2009年医保号为65432的患者,在2010年没有住院记录;或者2010年医保号为19632的患者在2009年没有住过院,这两种情况均属于无法持续追踪,都要删除。而您用append的结果是不删除任何记录,而是简单的两个数据库合并

9
黃河泉 在职认证  发表于 2018-5-31 16:13:18
zhushji 发表于 2018-5-31 13:35
谢谢您用stata做出您的解法,但我想要的结果是两年内都有住院记录的患者,而删除那些只在一年中有住院记录 ...
现在知道你要的了!接续上述程序 (你可能需要先 ssc install egenmore),试试
  1. by 医保号: egen n = nvals(year)
  2. drop if n < 2
复制代码
可得
  1. list, sep(0)

  2.      +------------------------------------------+
  3.      | year   医保号   性别   年龄   总费用   n |
  4.      |------------------------------------------|
  5.   1. | 2009    12346      2     65     7432   2 |
  6.   2. | 2010    12346      2     66     7432   2 |
  7.   3. | 2010    12346      2     66    95555   2 |
  8.   4. | 2009    13585      1     45     3577   2 |
  9.   5. | 2009    13585      1     45     4325   2 |
  10.   6. | 2010    13585      1     46     8854   2 |
  11.      +------------------------------------------+
复制代码

10
zhushji 发表于 2018-5-31 17:18:17
黃河泉 发表于 2018-5-31 16:13
现在知道你要的了!接续上述程序 (你可能需要先 ssc install egenmore),试试可得
哇好棒!!实现了我想要的结果,撒花

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 00:37