楼主: 单名一个苗
2724 9

[编程问题求助] 有关stata命令的问题 [推广有奖]

  • 3关注
  • 5粉丝

已卖:1261份资源

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
23157 个
通用积分
82.0087
学术水平
14 点
热心指数
18 点
信用等级
13 点
经验
6119 点
帖子
232
精华
0
在线时间
88 小时
注册时间
2013-11-24
最后登录
2016-3-25

楼主
单名一个苗 发表于 2014-12-7 21:14:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想问下有关stata命令的问题,我想统计数据库里面10岁-99岁区间内、20岁-99岁区间内,年龄结尾数字分别为0、1、2、3、4、5、6、7、8、9的年龄分别有多少??(例如,数据库里有40000个年龄数据,统计以0结尾的年龄数有多少---10岁、20岁、30岁、40岁。。。100岁在数据库里有多少;统计以1结尾的年龄数有多少---11岁,21岁,31岁。。。101岁在数据库里有 多少)命令应该怎么写呢??求助啊!!

在10-99岁区间内,20-99岁区间内,分别统计以0、1、2、3........9结尾的年龄的数量有多少,求老师指导!!谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:stata命令 Stata tata 统计数据库 统计数据 stata编程 求助stata 统计分析 stata命令

沙发
SpencerMeng 在职认证  发表于 2014-12-7 21:33:42
你好,鉴于你没有提供部分数据,我就用我的数据给你提供一种思路吧。
  1. clear
  2. inp str20 year
  3. 2000-12-31
  4. 2000-06-30
  5. 2000-01-01
  6. 1999-12-31
  7. 1999-06-30
  8. 1998-12-31
  9. 1998-06-30
  10. 2013-09-30
  11. 2013-06-30
  12. 2013-03-31
  13. 2012-12-31
  14. 2012-01-01
  15. end

  16. *如果想取出后一位
  17. gen newyear=substr(year,-1,1)
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
hustchen2012 + 24 + 24 + 2 + 2 + 2 精彩帖子

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

藤椅
SpencerMeng 在职认证  发表于 2014-12-7 21:39:07
不好意思 刚才回复的不能完全显示。。。不知道怎么回事了  试了好几次。。

刚才我还没说完

下一条命名就出了你想要的了 :  tab newyear

希望能帮到你

板凳
单名一个苗 发表于 2014-12-7 22:00:24
SpencerMeng 发表于 2014-12-7 21:39
不好意思 刚才回复的不能完全显示。。。不知道怎么回事了  试了好几次。。

刚才我还没说完
首先感谢老师的回复!谢谢!我数据库里面的年龄数据都是现成的,比如45,36,27,10,22,76,12,34,55,65岁....年龄都是这样数值型的数字,我都已经把具体年龄算好了,我现在苦恼的是怎么来统计上面所说的分别0-9结尾的年龄的个数,比如在10-99岁区间内,以0结尾的年龄有多少个,以5结尾的年龄有多少个.....只需要计算两个区间内:10-99岁和20-99岁区间内,分别统计以0-9结尾的年龄的数量。
不知道我这样表述老师能清楚吗,老师的这个命令我还没来得及试,只是看到命令里面还有年月日时间格式的命令,就想着可能之前我没表述清楚,数据库里的年龄其实都是算好的。。

报纸
SpencerMeng 在职认证  发表于 2014-12-7 22:07:08
单名一个苗 发表于 2014-12-7 22:00
首先感谢老师的回复!谢谢!我数据库里面的年龄数据都是现成的,比如45,36,27,10,22,76,12,34,55 ...
我懂你的意思  呵呵  刚才只是举例子

我思路就是在10-99岁这个区间内的先建立一个新变量newvar,这个newvar呢,只包括年龄的最后一个数字,然后tab newvar就一目了然了。

你可以针对你10-99岁试试这个命令

有问题回帖就行

地板
单名一个苗 发表于 2014-12-8 09:22:29
SpencerMeng 发表于 2014-12-7 22:07
我懂你的意思  呵呵  刚才只是举例子

我思路就是在10-99岁这个区间内的先建立一个新变量newvar,这个n ...
噢。。。谢老师!
昨晚睡觉之前我自己想了一个笨办法,就是麻烦点,貌似也能统计出来
gen agenum1=1 if age=10|age=20|age=30|age=40|age=50|age=60|age=70|age=80|age=90|age=100
tab agenum1,missing
同理
gen agenum2=1 if age=11|age=21|age=31|age=41|age=51|age=61|age=71|age=81|age=91|age=101
tab agenum2,missing
以下都同理,这样就是稍麻烦些,不过简单易懂,我初学stata,有些你说的我不是太懂,嘿嘿,,,不过还是谢谢老师的回复和指导,谢谢!

7
SpencerMeng 在职认证  发表于 2014-12-8 09:26:22
单名一个苗 发表于 2014-12-8 09:22
噢。。。谢老师!
昨晚睡觉之前我自己想了一个笨办法,就是麻烦点,貌似也能统计出来
gen agenum1=1 if ...
呵呵  行呢  能做出来就可以啦  慢慢来  学习一段时间你就轻车熟路了~  常来论坛逛啊

8
蓝色 发表于 2014-12-8 09:46:30
gen agenum=substr(string(age) , -1 , 1 )
tab agenum  if age>=10 & age <=99
tab agenum  if age>=20 & age <=99
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
SpencerMeng + 10 + 1 + 1 学习了~

总评分: 论坛币 + 10  学术水平 + 1  热心指数 + 1   查看全部评分

9
单名一个苗 发表于 2014-12-8 10:55:17
SpencerMeng 发表于 2014-12-8 09:26
呵呵  行呢  能做出来就可以啦  慢慢来  学习一段时间你就轻车熟路了~  常来论坛逛啊
嗯,好的老师

10
单名一个苗 发表于 2014-12-8 11:12:19
蓝色 发表于 2014-12-8 09:46
gen agenum=substr(string(age) , -1 , 1 )
tab agenum  if age>=10 & age =20 & age
老师这个太厉害了!!

只是不知道为啥,和我的笨办法统计的稍有偏差,在10-99区间内,以0、1、2结尾的这三个不同,按老师的命令运行出来的分别是4791、4841、4334,按我自己的统计出来是4922、4843、4335,在20-99区间内,也是以0、1、2结尾的结果不一样,老师的是4365、4385、3896,我的是4529、4387、4897,都是以0结尾的差200个样本量,以1结尾的差2个,以2结尾的差1个;其他以3、4、5、6、7、8、9结尾的统计出来的数字两种方法出的结果都一模一样,好奇怪不知道为啥。。{:3_61:}

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

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