楼主: bbq86455
4204 3

[其他] 请教一个关于replace的问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
1460 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
56 点
帖子
6
精华
0
在线时间
12 小时
注册时间
2010-3-7
最后登录
2013-12-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的数据格式是这样的
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年,那这个方法就不行了,不知道有没有什么更好的方法,希望高手把两种方法都说一下,非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:replace place LAC PLA value replace

沙发
bbq86455 发表于 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

.

使用道具

板凳
jzhyue 发表于 2010-10-13 19:30:33 |只看作者 |坛友微信交流群
*若同年中只有A、B两个Name(或只具其一)
bys time (name):replace value=value[2] if _N==2

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-7 13:53