楼主: runman
13682 8

[数据管理求助] 如何replace满足特定条件的变量? [推广有奖]

学科带头人

77%

还不是VIP/贵宾

-

威望
0
论坛币
2319 个
通用积分
28.6717
学术水平
8 点
热心指数
9 点
信用等级
8 点
经验
51435 点
帖子
980
精华
0
在线时间
3788 小时
注册时间
2010-4-3
最后登录
2024-2-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请教一下大家,对于如下的面板数据,如何将样本期(time1~time6)中变量xyz取值全部为空值的对象(bbb),将其变量xyz取值在其整个样本期(time1~time6)中全部替换为123。
而对于样本期不全为空值的对象ccc它的变量xyz取值不做任何改变。即达到下面红色字体表格的补缺效果。
非常感谢啦^_^

numbertimeName         xyz

1

1

aaa

516

1

2

aaa

892

1

3

aaa

439

1

4

aaa

762

1

5

aaa

395

1

6

aaa

109

2

1

bbb

2

2

bbb

2

3

bbb

2

4

bbb

2

5

bbb

2

6

bbb

3

1

ccc

3

2

ccc

3

3

ccc

3

4

ccc

3

5

ccc

897

3

6

ccc

563




numbertimeNameabc

1

1

aaa

516

1

2

aaa

892

1

3

aaa

439

1

4

aaa

762

1

5

aaa

395

1

6

aaa

109

2

1

bbb

123

2

2

bbb

123

2

3

bbb

123

2

4

bbb

123

2

5

bbb

123

2

6

bbb

123

3

1

ccc

3

2

ccc

3

3

ccc

3

4

ccc

3

5

ccc

897

3

6

ccc

563


二维码

扫码加我 拉你入群

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

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

关键词:replace place PLA LAC numbert replace 如何 样本

回帖推荐

黃河泉 发表于2楼  查看完整内容

Please try:
沙发
黃河泉 在职认证  发表于 2016-9-24 07:32:06 |只看作者 |坛友微信交流群
Please try:
  1. bys number: egen m = count(xyz)
  2. replace xyz = 123 if m == 0
复制代码

使用道具

藤椅
runman 发表于 2016-9-25 14:53:06 |只看作者 |坛友微信交流群
黃河泉 发表于 2016-9-24 07:32
Please try:
太感谢了^_^

使用道具

板凳
黃河泉 在职认证  发表于 2016-9-25 15:27:32 |只看作者 |坛友微信交流群
runman 发表于 2016-9-25 14:53
太感谢了^_^
You are welcome.

使用道具

报纸
runman 发表于 2016-9-25 22:43:09 |只看作者 |坛友微信交流群
黃河泉 发表于 2016-9-25 15:27
You are welcome.
大神^_^想再请教一个问题,对于如下表格的面板数据,其中变量abc是存在缺失值的,而变量def数据是完整的,假设abc与def有密切的关系,我想用mi impute — Impute missing values方法,利用def(完整的数据)对abc(缺失数据)进行估计。发现可以用以下方法实现对面板数据每个子样本abc缺失值的估计:mi set wide
mi register imputed abc
mi impute pmm   abc  def   if number==1, add(1) rseed(10000)  force
mi impute pmm   abc  def   if number==2, add(1) rseed(10000)  force
mi impute pmm   abc  def   if number==3, add(1) rseed(10000)  force
......
mi impute pmm   abc  def   if number==100, add(1) rseed(10000)  force

是否有什么好的办法,不需要执行100次程序,而使用循环语句执行这100次的多重补漏呢?谢谢啦^_^




numbertimeNameabcdef

1

1

aaa

516

13

1

2

aaa

892

99

1

3

aaa

439

20

1

4

aaa

762

36

1

5

aaa

395

18

1

6

aaa

109

21

2

1

bbb

17

2

2

bbb

516

31

2

3

bbb

229

24

2

4

bbb

33

2

5

bbb

42

2

6

bbb

603

60

3

1

ccc

25

3

2

ccc

17

3

3

ccc

39

3

4

ccc

52

3

5

ccc

897

76

3

6

ccc

563

25

100

1

zzz

109

27

100

2

zzz

138

36

100

3

zzz

152

49

100

4

zzz           36

100

5

zzz           77

100

6

zzz

201

92



使用道具

地板
runman 发表于 2016-9-26 10:37:09 |只看作者 |坛友微信交流群
黃河泉 发表于 2016-9-25 15:27
You are welcome.
大神,我尝试写了一个条件循环语句,但是stata没有任何反应,也没有报错和提示信息,请教一下您,问题可能出在哪啊,程序如下:

mi set wide
mi register imputed abc
  forvalues i = 1(1)100{
  if number == `i' {
  local mi impute pmm abc def, add(1) rseed(10000) force
  }
}

使用道具

7
黃河泉 在职认证  发表于 2016-9-26 10:49:35 |只看作者 |坛友微信交流群
runman 发表于 2016-9-26 10:37
大神,我尝试写了一个条件循环语句,但是stata没有任何反应,也没有报错和提示信息,请教一下您,问题可 ...
我从没用过 mi 相关指令,恐怕帮不上忙!

使用道具

8
runman 发表于 2016-9-26 10:56:53 |只看作者 |坛友微信交流群
还是要谢谢啦^_^

使用道具

9
飞马洪 发表于 2018-10-25 11:35:07 |只看作者 |坛友微信交流群
runman 发表于 2016-9-26 10:37
大神,我尝试写了一个条件循环语句,但是stata没有任何反应,也没有报错和提示信息,请教一下您,问题可 ...
local mi impute pmm abc = def, add(1) rseed(10000) force

使用道具

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

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

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

GMT+8, 2024-4-28 05:49