楼主: smartpigeon
2355 10

[数据管理求助] 数据生成的求助 [推广有奖]

  • 12关注
  • 4粉丝

已卖:22份资源

副教授

20%

还不是VIP/贵宾

-

威望
0
论坛币
7206 个
通用积分
134.6343
学术水平
26 点
热心指数
36 点
信用等级
25 点
经验
2638 点
帖子
726
精华
0
在线时间
761 小时
注册时间
2009-9-8
最后登录
2025-11-26

楼主
smartpigeon 在职认证  发表于 2014-11-14 09:21:30 |AI写论文
5论坛币
请教各位,如何生成birthorder,见下表?age是id的年龄,age1~age5是其兄弟姐妹的年龄。谢谢!

idageage1age2age3age4age5birthorder
101012315242718193
10102168143.232
1010317131410..1





最佳答案

蓝色 查看完整内容

clear input id age age1 age2 age3 age4 age5 10101 23 15 24 27 18 19 10102 16 8 14 3 . 23 10103 17 13 14 10 . . end rename age age0 reshape long age,i(id) j(pid) drop if age==. gsort +id -age bys ...
关键词:数据生成 Birth Order dage 兄弟姐妹 如何

沙发
蓝色 发表于 2014-11-14 09:21:31
clear
input  
id          age        age1     age2      age3       age4      age5        
10101        23        15        24        27        18        19        
10102        16         8        14        3          .        23        
10103        17        13        14        10        .        .
end

rename age age0

reshape long age,i(id) j(pid)
drop if age==.

gsort +id -age
bysort id : gen order=_n
list


已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
hustchen2012 + 12 + 12 + 2 + 2 精彩帖子
crystal8832 + 10 + 1 + 1 热心帮助其他会员
smartpigeon + 3 + 3 + 3 热心帮助其他会员

总评分: 经验 + 12  论坛币 + 22  学术水平 + 6  热心指数 + 6  信用等级 + 3   查看全部评分

藤椅
rommelwenhao 学生认证  发表于 2014-11-14 09:40:28
excel会做,别的不会…… 工作簿1.xlsx (10.19 KB)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
smartpigeon + 1 + 3 + 1 还是谢谢你。

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

板凳
smartpigeon 在职认证  发表于 2014-11-14 09:45:55
rommelwenhao 发表于 2014-11-14 09:40
excel会做,别的不会……
数据量很大,要是能用stata命令跑出来就好了。
不过还是很感谢!

报纸
ywh19860616 发表于 2014-11-14 10:16:02
能说清楚最后一列的生成规则吗?

地板
smartpigeon 在职认证  发表于 2014-11-14 10:26:53
ywh19860616 发表于 2014-11-14 10:16
能说清楚最后一列的生成规则吗?
就是看该id的年龄在其兄弟姐妹中排行老几。
以第一行,id为10101为例,该个体年龄为23岁,有两个兄弟姐妹比他大,那么他就排行老三,也就是birthorder赋值为3。

7
ywh19860616 发表于 2014-11-14 10:47:38
时间比较紧,给你一个大概的思想
  1. clear
  2. input id        age        age1        age2        age3        age4        age5       
  3. 10101        23        15        24        27        18        19       
  4. 10102        16        8        14        3        .        23       
  5. 10103        17        13        14        10        .        .
  6. end

  7. foreach x of varlist age1 age2 age3 age4 age5 {
  8. gen d`x' = age - `x'
  9. }

  10. keep dage1-dage5
  11. xpose,clear

  12. foreach x of varlist v1 v2 v3 {
  13. qui inspect `x'
  14. local m =  r(N_neg) + 1
  15. di `m'
  16. }
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 10 + 1 + 1 热心帮助其他会员
smartpigeon + 3 + 3 + 3 热心帮助其他会员

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

8
ywh19860616 发表于 2014-11-14 10:49:18
就是可以把其他变量和age做差,然后统计出负值的个数,再加上1就是了。
你可以把计算结果保存到矩阵或者变量中,你自己增加以下。
如果要放回原数据中,那你运算前先preserve,然后再merge就可以。

9
smartpigeon 在职认证  发表于 2014-11-14 12:32:17
ywh19860616 发表于 2014-11-14 10:49
就是可以把其他变量和age做差,然后统计出负值的个数,再加上1就是了。
你可以把计算结果保存到矩阵或者变 ...
统计出负值的个数,用什么命令?
菜鸟一枚,还请不要嫌我麻烦。

10
smartpigeon 在职认证  发表于 2014-11-14 12:54:06
蓝色 发表于 2014-11-14 09:21
clear
input  id          age        age1     age2      age3       age4      age5        
10101     ...
非常感谢!

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

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