全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
4450 3
2010-10-12
我的数据格式是这样的
NAME  TIME VALUE
A          2008    4
A          2009    2
A          2010    5
B          2008   11
B          2009   23
B          2010   43
我现在想把A对应的每个value替换成相对应的时间下B对应的value值,也就是4->11,2->23,5->43。我自己想到的就是一个比较死的办法,
replace VALUE=VALUE[这个里面就不会填了,我想返回一个行数加上3之后的数] if NAME=="A"

但是如果A的数值不是固定的3年,那这个方法就不行了,不知道有没有什么更好的方法,希望高手把两种方法都说一下,非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-10-13 17:07:22
顶一下,期待有人帮解答
二维码

扫码加我 拉你入群

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

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

2010-10-13 18:01:47
clear
input str20 NAME  TIME VALUE
A          2008    4
A          2009    2
A          2010    5
B          2008   11
B          2009   23
B          2010   43
end
sort NAME TIME

gen temp=VALUE[_n+3]
list
replace VALUE=temp
list

drop temp



. clear

. input str20 NAME  TIME VALUE

                     NAME       TIME      VALUE
  1. A          2008    4
  2. A          2009    2
  3. A          2010    5
  4. B          2008   11
  5. B          2009   23
  6. B          2010   43
  7. end

. sort NAME TIME

.
. gen temp=VALUE[_n+3]
(3 missing values generated)

. list

     +----------------------------+
     | NAME   TIME   VALUE   temp |
     |----------------------------|
  1. |    A   2008       4     11 |
  2. |    A   2009       2     23 |
  3. |    A   2010       5     43 |
  4. |    B   2008      11      . |
  5. |    B   2009      23      . |
     |----------------------------|
  6. |    B   2010      43      . |
     +----------------------------+

. replace VALUE=temp
(6 real changes made, 3 to missing)

. list

     +----------------------------+
     | NAME   TIME   VALUE   temp |
     |----------------------------|
  1. |    A   2008      11     11 |
  2. |    A   2009      23     23 |
  3. |    A   2010      43     43 |
  4. |    B   2008       .      . |
  5. |    B   2009       .      . |
     |----------------------------|
  6. |    B   2010       .      . |
     +----------------------------+

.
.
end of do-file

.
二维码

扫码加我 拉你入群

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

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

2010-10-13 19:30:33
*若同年中只有A、B两个Name(或只具其一)
bys time (name):replace value=value[2] if _N==2
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群