楼主: stataxsd
1736 9

[数据管理求助] 如何统计同一家庭中孩子年龄最小的那一行 [推广有奖]

  • 1关注
  • 0粉丝

本科生

71%

还不是VIP/贵宾

-

威望
0
论坛币
20579 个
通用积分
6.0980
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1169 点
帖子
74
精华
0
在线时间
60 小时
注册时间
2019-6-23
最后登录
2023-1-2

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问如何保留同一家庭中孩子年龄最小的那一行,条件:1)若家庭只有一个成员,则直接保留;2)若多个成员属于同一家庭,则保留孩子年龄最小的那一行。比如,下图标黄是需要保留的(直列示几行,不代表全部),同一家庭两个成员的孩子年龄若相同,则保留哪行都行。fid16代表家庭编码,pid代表个人编码,pid_s代表配偶,tb1y_a_c*代表孩子编码
---------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str7 fid16 long pid double pid_s int(tb1y_a_c1 tb1y_a_c2 tb1y_a_c3 tb1y_a_c4 tb1y_a_c5)
  4. [color=#000000][backcolor=lemonchiffon]"210238" 210238101 210238102 1992    .    . . .[/backcolor][/color]
  5. [backcolor=yellow]"210244" 210244102 210244101 1982    .    . . .[/backcolor]
  6. "210244" 210244101 210244102 1982    .    . . .
  7. [backcolor=lemonchiffon]"210250" 210250103         . 1999    .    . . .[/backcolor]
  8. [backcolor=darkorange]"210250" 210250101 210250102 1972 1976    . . .[/backcolor]
  9. "210250" 210250102 210250101 1972 1976    . . .
  10. [backcolor=yellow]"210254" 210254103 210254104 2010    .    . . .[/backcolor]
  11. "210254" 210254101 210254102 1983    .    . . .
  12. "210254" 210254102 210254101 1983    .    . . .
  13. "210261" 210261102 210261101 1961 1963 1968 . .
  14. "210261" 210261101 210261102 1961 1963 1968 . .
  15. "210263" 210263101 210263102 2000    .    . . .
  16. "210265" 210265102 210265101 1967 1972    . . .
  17. "210269" 210269101         . 1961 1962 1963 . .
  18. "210270" 210270101         . 2009    .    . . .
  19. "210270" 210270102 210270103 1981 1992    . . .
  20. "210271" 210271101 210271102 1963 1967    . . .
  21. end
复制代码

------------------ copy up to and including the previous line ------------------


二维码

扫码加我 拉你入群

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

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

关键词:including generated Starting generate previous

回帖推荐

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

是要这个吗?
沙发
stataxsd 发表于 2019-8-30 16:12:01 |只看作者 |坛友微信交流群
以这个数据为准吧,谢谢!
---------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str7 fid16 long pid double pid_s int(tb1y_a_c1 tb1y_a_c2 tb1y_a_c3 tb1y_a_c4 tb1y_a_c5)
  4. "210238" 210238101 210238102 1992    .    . . .
  5. "210244" 210244102 210244101 1982    .    . . .
  6. "210244" 210244101 210244102 1982    .    . . .
  7. "210250" 210250103         . 1999    .    . . .
  8. "210250" 210250101 210250102 1972 1976    . . .
  9. "210250" 210250102 210250101 1972 1976    . . .
  10. "210254" 210254103 210254104 2010    .    . . .
  11. "210254" 210254101 210254102 1983    .    . . .
  12. "210254" 210254102 210254101 1983    .    . . .
  13. "210261" 210261102 210261101 1961 1963 1968 . .
  14. "210261" 210261101 210261102 1961 1963 1968 . .
  15. "210263" 210263101 210263102 2000    .    . . .
  16. "210265" 210265102 210265101 1967 1972    . . .
  17. "210269" 210269101         . 1961 1962 1963 . .
  18. "210270" 210270101         . 2009    .    . . .
  19. "210270" 210270102 210270103 1981 1992    . . .
  20. "210271" 210271101 210271102 1963 1967    . . .
  21. end
复制代码

------------------ copy up to and including the previous line ------------------

使用道具

藤椅
黃河泉 在职认证  发表于 2019-8-30 16:34:25 |只看作者 |坛友微信交流群
stataxsd 发表于 2019-8-30 16:12
以这个数据为准吧,谢谢!
---------------------- copy starting from the next line ------------------ ...
是要这个吗?
  1. egen tmax = rowmax(tb1y_a_c1-tb1y_a_c5)
复制代码

使用道具

板凳
stataxsd 发表于 2019-8-30 17:23:11 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-8-30 16:34
是要这个吗?
老师,您做出来的是显示每行的最小年龄,不是我的意思。我想要:保留一行。条件是:1)为每一个家庭只保留一行(因为我的数据中有的家庭有多行);2)这一行:需满足孩子是这个家庭中最小的(也就是是多行中比较而言年龄最小的那一行,这多行是同一个家庭的多行)。所以,我是想要保留,不是创造新的。

使用道具

报纸
stataxsd 发表于 2019-8-30 17:31:32 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-8-30 16:34
是要这个吗?
再比如,老师,我换个说法。下面这三个家庭,多行的是第一个家庭和第二家庭,因为他们有多个成员。但都只保留第一行,因为第一行成员的孩子与其他同家庭成员孩子年龄相比,是最小的。第三个家庭只有一行,所以不涉及排除条件,直接保留。请问如何写代码,谢谢您!
------------------- copy starting from the next line -----------------------
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte(家庭 成人) int(孩子1 孩子2) byte(孩子3 孩子4 孩子5)
  4. 1 11 1991 2008 . . .
  5. 1 12 1978 1980 . . .
  6. 2 21 1990 1998 . . .
  7. 2 22 1978 1876 . . .
  8. 2 23 1957 1954 . . .
  9. 2 24 1990 1992 . . .
  10. 3 31 2001    . . . .
  11. end
复制代码
------------------ copy up to and including the previous line ------------------

使用道具

地板
黃河泉 在职认证  发表于 2019-8-30 18:02:39 |只看作者 |坛友微信交流群
stataxsd 发表于 2019-8-30 17:31
再比如,老师,我换个说法。下面这三个家庭,多行的是第一个家庭和第二家庭,因为他们有多个成员。但都只 ...
有无类似
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte(家庭 成人) int(孩子1 孩子2) byte(孩子3 孩子4 孩子5)
  4. 1 11 1991 2008 . . .
  5. 1 12 1993 2005 . . .
  6. end
复制代码

使用道具

7
stataxsd 发表于 2019-8-30 18:13:21 |只看作者 |坛友微信交流群
有类似点,因为我只想挑出满足条件的一行,恳请老师再次援助!不胜感激!您觉得哪个例子方便您就用哪个。

使用道具

8
stataxsd 发表于 2019-8-30 18:14:14 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-8-30 18:02
有无类似
老师您觉得哪个例子方便就用哪个,在我看来是有类似点,恳请老师援助!不胜感激!

使用道具

9
黃河泉 在职认证  发表于 2019-8-30 18:23:01 |只看作者 |坛友微信交流群
stataxsd 发表于 2019-8-30 18:13
有类似点,因为我只想挑出满足条件的一行,恳请老师再次援助!不胜感激!您觉得哪个例子方便您就用哪个。
你要讲清楚,各种状况的资料应该都要在例子中,别人才可以尝试!

使用道具

10
stataxsd 发表于 2019-8-31 09:36:44 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-8-30 18:23
你要讲清楚,各种状况的资料应该都要在例子中,别人才可以尝试!
谢谢老师,经过您和其他前辈的点拨,解决了,应该是这样,egen tmax = rowmax(tb1y_a_c1-tb1y_a_c5)
bysort fid16: egen  tmax0=max(tmax)

keep if tmax0==tmax
duplicates        drop        fid16,        force

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-18 03:39