楼主: jmjun85
4080 15

[数据管理求助] 又要向大家求助了,一个统计个数的问题 [推广有奖]

  • 2关注
  • 5粉丝

svip3

已卖:21份资源

副教授

71%

(VIP/贵宾)七级

1%

威望
0
论坛币
69737 个
通用积分
299.6298
学术水平
4 点
热心指数
15 点
信用等级
1 点
经验
490 点
帖子
320
精华
0
在线时间
1471 小时
注册时间
2006-11-19
最后登录
2025-12-26

楼主
jmjun85 发表于 2015-4-1 17:32:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
7.png

这是我的数据的一个基本情况,我想统计一下第三列(v4)的人的个数,可是有几列两个人写在一起饿就不知道怎么弄了。我用bysort v1 :egen a=count(v1),出来的就是v5的数字,很明显是错的。
还要麻烦大家给指点下。
其中v1是代码
二维码

扫码加我 拉你入群

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

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

关键词:bysort Count egen 基本情况 怎么弄 统计

沙发
SpencerMeng 在职认证  发表于 2015-4-1 17:56:25
楼主,您好。

我是这样想的,统计每行观测值中人名的个数,可以先计算人名之间分号的个数,再加一就是人数了

附送例子:
  1. clear
  2. inp str10 x
  3.    "a;b"
  4.    "c;d"
  5.    "f;b;c;d"
  6.    "w;d;c;d"
  7.    "d;b;c"
  8.    "s;d"
  9. end
  10. *想看看每行中分号出现的次数
  11. g y=(length(x)-length(subinstr(x,";","",.)))

  12. gen z=y+1  //每行字母的个数
复制代码

藤椅
jmjun85 发表于 2015-4-2 10:18:04
SpencerMeng 发表于 2015-4-1 17:56
楼主,您好。

我是这样想的,统计每行观测值中人名的个数,可以先计算人名之间分号的个数,再加一就是人 ...
多谢,多谢
可是这样只计算出了每行的字母个数
我希望能够计算出你的例子中的整个变X中的字母个数,还要剔除重复。

应该是不仅有X,下面还有X1、X2。。。。。等都跟X一样包含字母,需要去计算其中的不重复的字母个数

我只会写简单的语句,编程还不行啊。

你能还写两句吗?

板凳
jmjun85 发表于 2015-4-3 13:54:08
求帮忙啊!

报纸
jmjun85 发表于 2015-4-3 19:58:53
真的不会,在线等!

地板
jmjun85 发表于 2015-4-6 13:21:21
斑竹,能帮我看看吗?@SpencerMeng

7
SpencerMeng 在职认证  发表于 2015-4-6 16:08:32
jmjun85 发表于 2015-4-2 10:18
多谢,多谢
可是这样只计算出了每行的字母个数
我希望能够计算出你的例子中的整个变X中的字母个数,还要 ...
  1. clear
  2. inp str10 x
  3.    "a;b"
  4.    "c;d"
  5.    "f;b;c;d"
  6.    "w;d;c;d"
  7.    "d;b;c"
  8.    "s;d"
  9. end


  10. count if strmatch(x,"*a*") //计算字母a出现的次数
  11. count if strmatch(x,"*b*")
  12. count if strmatch(x,"*c*")
  13. count if strmatch(x,"*d*")
复制代码

8
SpencerMeng 在职认证  发表于 2015-4-6 16:09:30
jmjun85 发表于 2015-4-6 13:21
斑竹,能帮我看看吗?@SpencerMeng
您说的提出重复出现的字母,具体什么意思?

例如例子中的b出现了三次,依据什么标准如何剔除重复值呢?

9
jmjun85 发表于 2015-4-6 17:09:53
SpencerMeng 发表于 2015-4-6 16:09
您说的提出重复出现的字母,具体什么意思?

例如例子中的b出现了三次,依据什么标准如何剔除重复值呢? ...
其实我就是要统计股票的分析师跟踪人数
一支股票有很多个分析师发布预测报告,就跟你的例子里一样
但也有一个分析师自己或者跟其他人一起发布了多个预测报告,虽然你发布了多份报告,但是我还是只能算一个分析师跟踪,所以要剔除重复
就跟你的例子里一样,x变量里剔除重复后有a b c d f s w共7个字母,我就是要按股票代码分别计算出7这个数字

10
SpencerMeng 在职认证  发表于 2015-4-6 22:22:20
jmjun85 发表于 2015-4-6 17:09
其实我就是要统计股票的分析师跟踪人数
一支股票有很多个分析师发布预测报告,就跟你的例子里一样
但也 ...
哦哦 我明白了。

我不会写循环,您看如下代码吧,麻烦些,希望能给您启示:
  1. clear
  2. inp id str10 x
  3.   1 "a;b"
  4.   1 "c;d"
  5.   1 "f;b;c;d"
  6.   1 "w;d;c;d"
  7.   1 "d;b;c"
  8.   1 "s;d"
  9.   2 "a;b"
  10.   2 "c;d"
  11.   2 "f;b;c;d"
  12.   2 "w;d;c;d"
  13.   2 "d;b;c"
  14.   2 "s;d"
  15.   3 "a;b"
  16.   3 "c;d"
  17.   3 "f;b;c;d"
  18.   3 "w;d;c;d"
  19.   3 "d;b;c"
  20.   3 "s;d"

  21. end

  22. split x,parse(";")

  23. preserve
  24. keep if id==1
  25. stack x1 x2 x3 x4,into(v) clear //将拆开的变量堆积成一列
  26. duplicates drop v, force //删除重复的字母
  27. count if v !="" //数出非重复字母的个数
  28. restore

  29. preserve
  30. keep if id==2
  31. stack x1 x2 x3 x4,into(v) clear //将拆开的变量堆积成一列
  32. duplicates drop v, force //删除重复的字母
  33. count if v !="" //数出非重复字母的个数
  34. restore

  35. preserve
  36. keep if id==3
  37. stack x1 x2 x3 x4,into(v) clear //将拆开的变量堆积成一列
  38. duplicates drop v, force //删除重复的字母
  39. count if v !="" //数出非重复字母的个数
  40. restore
复制代码

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

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