楼主: lain1988
23822 6

[数据管理求助] stata 中如何根据变量分组 [推广有奖]

  • 0关注
  • 0粉丝

大专生

75%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
4.7537
学术水平
2 点
热心指数
2 点
信用等级
1 点
经验
51 点
帖子
8
精华
0
在线时间
119 小时
注册时间
2010-2-1
最后登录
2016-5-7

楼主
lain1988 发表于 2014-11-20 00:26:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教各位大侠,如何根据一个变量把观测值分组变名字。搜索了版块里相关的帖子,都没有我这种情况的。所以发帖希望各位前辈可以帮忙。情况比较难描述,请看下图。现在的情况如图:
id year policy
au20000010c 2005 us gaap
au20000010c 2005 IFRS
au20000010c 2006 us gaap
au20000010c 2006 IFRS
au20000010c 2007 IFRS
au20000010c2008 IFRS
想根据policy分组 但是新的组的id有一点变动,如图:
id year policy
  au20000010c 2005 us gaap
  au20000010c 2006 us gaap
au20000010u 2005 IFRS
au20000010u 2006 IFRS
au20000010u 2007 IFRS
au20000010u 2008 IFRS
实在非常感谢!补充一下
我现在用sort id policy year 可以做出第二个图的分组。 但是不知道如何改这个名字。
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 变量分组 Policy IFRS 如何

沙发
ywh19860616 发表于 2014-11-20 09:12:53
  1. clear *
  2. input str20 id        year str16 policy
  3. au20000010c        2005        us gaap
  4. au20000010c        2005        IFRS
  5. au20000010c        2006        us gaap
  6. au20000010c        2006        IFRS
  7. au20000010c        2007        IFRS
  8. au20000010c        2008        IFRS
  9. end

  10. sort id policy year
  11. list
  12. replace id = subinstr(id,"c","u",1) in 1/4
复制代码
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
hustchen2012 + 12 + 12 + 1 + 1 + 1 精彩帖子
crystal8832 + 12 + 1 + 1 观点有启发
SpencerMeng + 60 + 1 + 1 热心帮助其他会员

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

藤椅
lain1988 发表于 2014-11-20 22:52:27
ywh19860616 发表于 2014-11-20 09:12
能那么快得到您的帮助,非常感谢!!!!!我用了您的代码,并稍加改变: relpace id=subinstr (id,"c","u",1) if policy=="IFRS" 就对了。
但是我仔细看了下我的数据后发现我有个地方弄错了。应该是“如果policy为IFRS,则id保留不变,而对于用 us gaap的id末尾从c变为u"所以我把我代码改成 relpace id=subinstr (id,"c","u",1) if policy!="IFRS". 但是这样的话别的id的c也变成了u.
我的主旨是对于一个id同时拥有2个policy的,分组并改变名字。而不影响只有一个policy的id名字。
不知道您是否能理解我的意思,对我自己的失误我很抱歉。

板凳
ywh19860616 发表于 2014-11-21 08:47:44
  1. clear *
  2. input str20 id     year str30 policy
  3. au20000010c        2005        "us gaap"
  4. au20000010c        2005        IFRS
  5. au20000010c        2006        "us gaap"
  6. au20000010c        2006        IFRS
  7. au20000010c        2007        IFRS
  8. au20000010c        2008        IFRS
  9. end


  10. replace id = subinstr(id,"c","u",1) if policy == "us gaap"
复制代码


如果不是这个结果,请把你需要的结果给出来。

报纸
lain1988 发表于 2014-11-21 19:09:59
ywh19860616 发表于 2014-11-21 08:47
如果不是这个结果,请把你需要的结果给出来。
得长感谢您这么迅速的回复,我一开始也是按照您这个方式做的 但是这个命令会导致所有用us gaap的公司都变成id尾数为U 如图
id year policy
au20000010u 2005 us gaap
au20000010u 2006 us gaap
au20000010c 2005IFRS
  au20000010c 2006 IFRS
  au20000010c 2007 IFRS
  au20000010c2008 IFRS
au20000012u 2007us gaap
au20000012u 2007us gaap
au20000012u 2007 us gaap
我的目的是:对于相同的id, 如果他有两个policy的话,把用us gaap的那个id末尾变为u.但是对于只用us gaap 的id,不改变他的id. 因为有些用us gaap的id的末尾也可能为c.如果用您的这个公式或者我先前的那个公式,都会使使用单一us gaap的公司id也发生变化。又如同上图的”au20000012u".
我希望得到的结果是
id year policy
au20000010u 2005 us gaap
au20000010u 2006 us gaap
au20000010c 2005IFRS
  au20000010c 2006 IFRS
  au20000010c 2007 IFRS
  au20000010c2008 IFRS
au20000012c 2007us gaap
au20000012c 2007us gaap
au20000012c 2007 us gaap
对于同时拥有两个policy的id改变其用us gaap的id尾数,而拥有单一policy的id不改变其尾数。
不知道这样您是否能明白? 实在非常感谢

地板
ywh19860616 发表于 2014-11-21 22:36:11
还是没有理解你的意思,比如现在原始数据为

id  year  policy
au20000010c  2005  us gaap
au20000010c  2005  IFRS
au20000010c  2006  us gaap
au20000010c  2006  IFRS
au20000010c  2007  IFRS
au20000010c  2008  IFRS

这时候的结果是什么?你能具体列出来吗?上一个帖子中你给出的结果
au20000012c 2007 us gaap  
au20000012c 2007 us gaap  
au20000012c 2007  us gaap  

为什么这不是属于同一个id有多个us gaap?
还有,需要用id和year同时识别吗?还是只用id?

7
lain1988 发表于 2014-11-25 05:29:56
ywh19860616 发表于 2014-11-21 22:36
还是没有理解你的意思,比如现在原始数据为

id  year  policy
实在好抱歉,现在才回复您。1. 我的文章是分析资产负债表的。得到数据是10000个公司的从2003年到2010年的资产负债表。期中一部分的公司只根据us gaap来做资产负债表。而余下一部分的公司是根据ifrs和us gaap来做资产负债表。 因此,对于后面那种公司,同一年会有两种资产负债表。其实我的问题是,我不知道如何用stata把这两周公司区分开来。也就是说组A是只用us gaap的公司,组B是用us gaap和ifrs的公司。 如果能区分。那我改名字什么的都很方便。因为我只要在命令后面加上if 这个公司是组B。
我现在主要无法区分两个公司。所以, 当我改变us gaap的公司的名字时,等于把所有用us gaap的公司的名字都改掉了。其实我只需要改B组的用us gaap的公司的名字。
2. 需要id 和year同时识别。
3.您给我的那个例子。我希望得到的结果是如下,但是不改变其他只用us gaap 的公司的名字。
id                    year   policy
au20000010u  2005  us gaap au20000010u  2006  us gaap
au20000010c  2005  IFRS
au20000010c  2006  IFRS
au20000010c  2007  IFRS
au20000010c  2008  IFRS
4. 对您一直以来对我的帮助,万分感谢!


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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-29 14:31