楼主: skyler1221
26116 6

[数据管理求助] stata如何计算符合某个区间的数据个数 [推广有奖]

  • 1关注
  • 0粉丝

已卖:2份资源

硕士生

6%

还不是VIP/贵宾

-

威望
0
论坛币
1163 个
通用积分
7.1087
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
260 点
帖子
15
精华
0
在线时间
249 小时
注册时间
2018-4-22
最后登录
2024-3-6

楼主
skyler1221 发表于 2018-10-23 18:31:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input int year str1 name byte(money money1 money2 quantity)
  4. 2000 "A" 50 25 75 1
  5. 2000 "B" 40 20 60 1
  6. 2000 "C" 10  5 15 0
  7. 2001 "A" 48 24 72 1
  8. 2001 "B" 28 14 42 0
  9. 2001 "C"  8  4 12 0
  10. 2002 "A" 30 15 45 2
  11. 2002 "B" 28 14 42 2
  12. 2002 "C" 24 12 36 2
  13. end
复制代码


如上所述,变量为年份、个体名称、原始金额、0.5倍原始金额、1.5倍原始金额、满足条件的计数。
quantity计数举例:2000年中,A的原始金额为50,满足筛选条件的区间为25-75。B的原始金额为40,在区间内,则计数+1。C原始金额为10,不在区间内,则不计数。

目前想到的方法是分步骤进行,但是太麻烦了,并且数据量很大,也有很多不同的数据库需要分开进行,请问有没有更便捷的代码?感激!

二维码

扫码加我 拉你入群

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

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

关键词:满足条件 数据量 分步骤 数据库 有没有 stata数据处理

回帖推荐

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

请先 ssc install rangestat,然后试试 (Clyde Schechter 之 wonderful 建议)

沙发
黃河泉 在职认证  发表于 2018-10-24 07:49:08
请先 ssc install rangestat,然后试试 (Clyde Schechter 之 wonderful 建议)
  1. gen long obs_no = _n
  2. rangestat (count) wanted = obs_no, by(year) interval(money money1 money2) excludeself
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
sakiny136 + 2 + 2 + 2 精彩帖子
skyler1221 + 1 + 1 + 1 太完美了!是我所需要的答案!

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

藤椅
skyler1221 发表于 2018-10-24 09:47:24
其实昨天自己也尝试了很久,最终放弃了stata用Excel中的COUNTIF命令得到了想要的答案在这里也做一下分享吧,希望对大家有所启发
命令如下:=COUNTIFS($C$2:$C$4,">="&D2,$C$2:$C$4,"<="&E2)。但是这个命令问题在于只能一年年的拉出结果,不能像stata一样一次性分年份的结果,并且Excel这个会有重复值,即每次生成的计数会把自身也算进去一次,最终得到的结果需要-1才是预期值。

再次感谢大神的帮助!!

1.png (26.12 KB)

1.png

板凳
skyler1221 发表于 2018-10-24 16:49:02
黃河泉 发表于 2018-10-24 07:49
请先 ssc install rangestat,然后试试 (Clyde Schechter 之 wonderful 建议)
今天做到数据处理的最后一个步骤了,又卡了一天了,十分需要您的帮助,再次感谢!!这次我用excel也做不出来了,唉。。
模拟数据如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input int year str1 name int(cash size)
  4. 2000 "A"  50 7700
  5. 2000 "B"  80 7900
  6. 2000 "C"  60 6100
  7. 2000 "D"  70 7500
  8. 2000 "E"  90 7600
  9. 2000 "F" 110 6800
  10. 2000 "G" 100 7400
  11. 2000 "H"  40 7300
  12. 2000 "I" 120 6100
  13. 2000 "J" 130 7100
  14. 2000 "K" 170 7800
  15. 2000 "L" 160 6900
  16. 2000 "M" 180 8000
  17. 2000 "N" 200 6700
  18. 2000 "O" 190 6600
  19. 2000 "P" 150 7200
  20. 2000 "Q" 210 6400
  21. 2000 "R" 230 7000
  22. 2000 "S" 140 6500
  23. 2000 "T" 220 6300
  24. end
复制代码
需要生成新变量的要求:
①根据size从高到低排序,取前1/4的值为目标区间;
②计算cash栏中比该企业数值高、并且在size前1/4区间的个数。
本来是想整个数据库一起计算,但是如果把年份加进去似乎更复杂,所以就先一年年做,最后合并。
先谢过您了!!

报纸
skyler1221 发表于 2018-10-24 19:40:47
skyler1221 发表于 2018-10-24 16:49
今天做到数据处理的最后一个步骤了,又卡了一天了,十分需要您的帮助,再次感谢!!这次我用excel也做不出 ...
晚上同样用excel和Python解决了这个问题。。。
Excel命令如下:=COUNTIFS($C$2:$C$21,">"&C2,$D$2:$D$21,"<=8000",$D$2:$D$21,">=7600")

地板
蓝色 发表于 2018-10-24 20:30:43
你的问题没有说清楚
2000年B的原始是40,但是B 同一行也有0.5倍,1.5倍,你为什么用的是A的区间?

2001年B,是28 为什么不在区间呢?

你的区间到底是什么,没有看明白

7
黃河泉 在职认证  发表于 2018-10-25 07:01:44
skyler1221 发表于 2018-10-24 16:49
今天做到数据处理的最后一个步骤了,又卡了一天了,十分需要您的帮助,再次感谢!!这次我用excel也做不出 ...
1. Stata 之强项即是可以分组作分析,所以请至少附上另一年之资料。2. 看得懂你的第一步,看不懂第二步,请用你的资料说明。

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

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