楼主: 赵人无名
21950 15

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

11
赵人无名 发表于 2012-6-6 22:56:20
蓝色 发表于 2012-6-5 07:18
肯定是命令写错啦

最好上传完整的do文件,才知道你那里写错
do文件的命令就是我上面那个命令啦!
就是我把数据放进去之后,要把一些年份设置为0,一些年份设置为1.比如
有一个时间段1950~1984
我想设置虚拟变量:1950~1978为0;1979~1984为1
我记得老师是用上面那个命令,但是我用了之后就出现了invalid 'replace'
do文件就只有那个命令
http://hi.baidu.com/hanxueyu/

12
赵人无名 发表于 2012-6-6 22:58:04
Brdic 发表于 2012-6-6 03:31
gen d=.
replace d=1 if year>=1979
replace d=0 if year
高手
谢谢你啦
我试过了可以用
http://hi.baidu.com/hanxueyu/

13
蓝色 发表于 2012-6-7 07:12:08
赵人无名 发表于 2012-6-6 22:56
do文件的命令就是我上面那个命令啦!
就是我把数据放进去之后,要把一些年份设置为0,一些年份设置为1.比 ...
你不像下面这样写出完整的do文件,别人很难判断,那里出的错。
下面的程序就是用的你的命令,可以执行啊。
结果都列出来了。
如果你是按照我那样写的命令,还出错,那就是软件没有升级的问题了。
如果你的命令写错了,多写个. 或者什么,也会出错。



*******************************************************
clear
set obs 20
gen year=1970+_n

list year

gen     d=1 if year>=1979
replace d=0 if year<1979
list

***********************************************

*结果***************************************
. clear

. set obs 20
obs was 0, now 20

. gen year=1970+_n

.
. list year

     +------+
     | year |
     |------|
  1. | 1971 |
  2. | 1972 |
  3. | 1973 |
  4. | 1974 |
  5. | 1975 |
     |------|
  6. | 1976 |
  7. | 1977 |
  8. | 1978 |
  9. | 1979 |
10. | 1980 |
     |------|
11. | 1981 |
12. | 1982 |
13. | 1983 |
14. | 1984 |
15. | 1985 |
     |------|
16. | 1986 |
17. | 1987 |
18. | 1988 |
19. | 1989 |
20. | 1990 |
     +------+

.
. gen     d=1 if year>=1979
(8 missing values generated)

. replace d=0 if year<1979
(8 real changes made)

. list

     +----------+
     | year   d |
     |----------|
  1. | 1971   0 |
  2. | 1972   0 |
  3. | 1973   0 |
  4. | 1974   0 |
  5. | 1975   0 |
     |----------|
  6. | 1976   0 |
  7. | 1977   0 |
  8. | 1978   0 |
  9. | 1979   1 |
10. | 1980   1 |
     |----------|
11. | 1981   1 |
12. | 1982   1 |
13. | 1983   1 |
14. | 1984   1 |
15. | 1985   1 |
     |----------|
16. | 1986   1 |
17. | 1987   1 |
18. | 1988   1 |
19. | 1989   1 |
20. | 1990   1 |
     +----------+

.
end of do-file

14
赵人无名 发表于 2012-6-7 17:41:26
蓝色 发表于 2012-6-7 07:12
你不像下面这样写出完整的do文件,别人很难判断,那里出的错。
下面的程序就是用的你的命令,可以执行啊。 ...
谢谢啦!解决咯!我用这个人的方法:
Brdic 发表于 2012-6-6 03:31
gen d=.
replace d=1 if year>=1979
replace d=0 if year
可以弄
http://hi.baidu.com/hanxueyu/

15
蓝色 发表于 2012-6-7 19:56:07
关键是那几种方法都没有问题
我用那几种都可以

你不能说明存在问题

16
赵人无名 发表于 2012-6-8 23:04:35
蓝色 发表于 2012-6-7 19:56
关键是那几种方法都没有问题
我用那几种都可以
嗯嗯,我问了老师了,是因为我里面出现了一点小错误,谢谢你
http://hi.baidu.com/hanxueyu/

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

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