楼主: 日复一日12
2728 8

[数据管理求助] stata怎么用下面的数值替代上面的数值? [推广有奖]

  • 0关注
  • 1粉丝

已卖:133份资源

讲师

17%

还不是VIP/贵宾

-

威望
0
论坛币
1151 个
通用积分
43.6279
学术水平
10 点
热心指数
18 点
信用等级
11 点
经验
11224 点
帖子
155
精华
0
在线时间
685 小时
注册时间
2012-3-26
最后登录
2025-1-23

楼主
日复一日12 发表于 2015-6-12 23:07:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据像这样:
A 2010 0
A 2010 3
B 2011 0
B 2011 0
B 2011 3
想把第三个变量中如果按第一个变量分类之后第一个观测为0,就替换成下面非0的观测;如A公司第一个观测为0,就替换成第二个非零的3
B公司第一个观测替换成3
当然不确定第一个0之后第几个才是非0
请问怎么实现呢?
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 变量分类 不确定 2011

沙发
andruw 在职认证  发表于 2015-6-13 00:38:58
假如楼主三个变量分别为a  b  c
  1. bysort a b (c): gen d = _n if c != 0
  2. bysort a b (c): egen e = min(d)
  3. bysort a b (c): gen f = c[e]
  4. bysort a b (c): gen g = _n
  5. replace c = f if g == 1
  6. drop d e f g
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
日复一日12 + 2 + 2 + 2 热心帮助其他会员

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

藤椅
日复一日12 发表于 2015-6-13 20:59:29
andruw 发表于 2015-6-13 00:38
假如楼主三个变量分别为a  b  c
谢谢回复!咋看不太明白,bys 后面 a b 又加个括号c是什么意思呢?
层主能不能解释下代码的含义?谢谢啦

板凳
andruw 在职认证  发表于 2015-6-13 21:32:14
日复一日12 发表于 2015-6-13 20:59
谢谢回复!咋看不太明白,bys 后面 a b 又加个括号c是什么意思呢?
层主能不能解释下代码的含义?谢谢啦
  1. input str8 a b c

  2.              a          b          c
  3.   1. A 2010 0
  4.   2. A 2010 3
  5.   3. B 2011 0
  6.   4. B 2011 0
  7.   5. B 2011 3
  8.   6. B 2011 4
  9.   7. end

  10. . list

  11.      +--------------+
  12.      | a      b   c |
  13.      |--------------|
  14.   1. | A   2010   0 |
  15.   2. | A   2010   3 |
  16.   3. | B   2011   0 |
  17.   4. | B   2011   0 |
  18.   5. | B   2011   3 |
  19.      |--------------|
  20.   6. | B   2011   4 |
  21.      +--------------+

  22. . bysort a b (c): gen d = _n if c != 0
  23. (3 missing values generated)

  24. . list

  25.      +------------------+
  26.      | a      b   c   d |
  27.      |------------------|
  28.   1. | A   2010   0   . |
  29.   2. | A   2010   3   2 |
  30.   3. | B   2011   0   . |
  31.   4. | B   2011   0   . |
  32.   5. | B   2011   3   3 |
  33.      |------------------|
  34.   6. | B   2011   4   4 |
  35.      +------------------+

  36. . bysort a b (c): egen e = min(d)

  37. . list

  38.      +----------------------+
  39.      | a      b   c   d   e |
  40.      |----------------------|
  41.   1. | A   2010   0   .   2 |
  42.   2. | A   2010   3   2   2 |
  43.   3. | B   2011   0   .   3 |
  44.   4. | B   2011   0   .   3 |
  45.   5. | B   2011   3   3   3 |
  46.      |----------------------|
  47.   6. | B   2011   4   4   3 |
  48.      +----------------------+

  49. . bysort a b (c): gen f = c[e]

  50. . list

  51.      +--------------------------+
  52.      | a      b   c   d   e   f |
  53.      |--------------------------|
  54.   1. | A   2010   0   .   2   3 |
  55.   2. | A   2010   3   2   2   3 |
  56.   3. | B   2011   0   .   3   3 |
  57.   4. | B   2011   0   .   3   3 |
  58.   5. | B   2011   3   3   3   3 |
  59.      |--------------------------|
  60.   6. | B   2011   4   4   3   3 |
  61.      +--------------------------+

  62. . bysort a b (c): gen g = _n

  63. . list

  64.      +------------------------------+
  65.      | a      b   c   d   e   f   g |
  66.      |------------------------------|
  67.   1. | A   2010   0   .   2   3   1 |
  68.   2. | A   2010   3   2   2   3   2 |
  69.   3. | B   2011   0   .   3   3   1 |
  70.   4. | B   2011   0   .   3   3   2 |
  71.   5. | B   2011   3   3   3   3   3 |
  72.      |------------------------------|
  73.   6. | B   2011   4   4   3   3   4 |
  74.      +------------------------------+

  75. . replace c = f if g == 1
  76. (2 real changes made)

  77. . list

  78.      +------------------------------+
  79.      | a      b   c   d   e   f   g |
  80.      |------------------------------|
  81.   1. | A   2010   3   .   2   3   1 |
  82.   2. | A   2010   3   2   2   3   2 |
  83.   3. | B   2011   3   .   3   3   1 |
  84.   4. | B   2011   0   .   3   3   2 |
  85.   5. | B   2011   3   3   3   3   3 |
  86.      |------------------------------|
  87.   6. | B   2011   4   4   3   3   4 |
  88.      +------------------------------+

  89. . drop d e f g

  90. . list

  91.      +--------------+
  92.      | a      b   c |
  93.      |--------------|
  94.   1. | A   2010   3 |
  95.   2. | A   2010   3 |
  96.   3. | B   2011   3 |
  97.   4. | B   2011   0 |
  98.   5. | B   2011   3 |
  99.      |--------------|
  100.   6. | B   2011   4 |
  101.      +--------------+
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
日复一日12 + 5 + 2 + 2 + 2 精彩帖子

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

报纸
andruw 在职认证  发表于 2015-6-13 21:33:29
日复一日12 发表于 2015-6-13 20:59
谢谢回复!咋看不太明白,bys 后面 a b 又加个括号c是什么意思呢?
层主能不能解释下代码的含义?谢谢啦
help by
  1.     The varlist1 (varlist2) syntax is of special use to programmers.  It verifies that the data are sorted by varlist1 varlist2 and then performs a by as if only varlist1 were specified.
  2.     For instance,

  3.         by pid (time): gen growth = (bp - bp[_n-1])/bp
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
日复一日12 + 5 + 2 + 2 + 2 精彩帖子

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

地板
日复一日12 发表于 2015-6-13 21:37:58
andruw 发表于 2015-6-13 21:33
help by
谢谢谢谢!!辛苦了!!

7
日复一日12 发表于 2015-6-13 21:51:05
andruw 发表于 2015-6-13 21:33
help by
再问问 如果是直接用 bys a b: XXX 和 用层主的 bys a (b) : XXX
这两个命令的效果应该是一样的吧?

8
andruw 在职认证  发表于 2015-6-13 21:56:53
日复一日12 发表于 2015-6-13 21:51
再问问 如果是直接用 bys a b: XXX 和 用层主的 bys a (b) : XXX
这两个命令的效果应该是一样的吧?
不一样。
1. bysort a b.  Your data are first sorted by a & b, then perform 'by' on a & b.
2. bysort a (b). Your data are first sorted by a & b, then perform 'by' only on a.
可以这样来想:
bysort a b 等价于
  1. sort a b
  2. by a b: ...
复制代码
bysort a (b) 等价于
  1. sort a b
  2. by a: ...
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
日复一日12 + 5 + 2 + 2 + 2 精彩帖子

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

9
日复一日12 发表于 2015-6-13 22:23:56
andruw 发表于 2015-6-13 21:56
不一样。
1. bysort a b.  Your data are first sorted by a & b, then perform 'by' on a & b.
2. bys ...
明白了 非常感谢!

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

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