楼主: ermutuxia
5347 10

根据字符变量生成虚拟变量怪异问题(excel不可见符号问题) [推广有奖]

信息管理员

小桥流水人家

学术权威

65%

还不是VIP/贵宾

-

威望
3
论坛币
313334 个
通用积分
11475.8269
学术水平
702 点
热心指数
980 点
信用等级
309 点
经验
129196 点
帖子
9290
精华
1
在线时间
4176 小时
注册时间
2009-4-27
最后登录
2023-10-19

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
想根据一个字符变量xx生成一个虚拟变量d1,如果xx有值,则d1取值为1,否则取0,但是通过下面的命令总是不能达到我的想法:
gen d1=0
replace d1=1 if xx!=""
用这句命令的结果是d1的全部取值均为1,也就是说根据这个结果xx的所有观测都有值,但是通过肉眼直观的观察xx是有一个缺失值的,这是为什么?经过仔细检查分析,发现xx里面的缺失值是用一个类似空格的东西表示的,肉眼看不到,将鼠标定义到缺失值单元格里,然后按住鼠标拖拽会有如图的反映。这就是所有的d1都变成1的原因。然后追踪到原始的放在excel文件中的数据,执行同样的操作得到的图形如下:然后把这个黑色长块黏贴到word中却什么都没有。可以在excel中用查找替换功能将那个全部替换为空,只要将不可见符号复制粘贴到查找框里就行了。然后再将数据导入到stata中就可以了。
未命名.GIF 未命名.GIF
二维码

扫码加我 拉你入群

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

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

关键词:EXCEL 字符变量 虚拟变量 变量生成 xcel excel

沙发
蓝色 发表于 2012-11-26 12:05:39 |只看作者 |坛友微信交流群
把数据xx单独贴出来,看看到底是什么?
应该有比你这更简单的方法

使用道具

藤椅
ermutuxia 发表于 2012-11-26 16:45:01 |只看作者 |坛友微信交流群
你看下,excel里面有数据。

data.xls

16 KB

使用道具

板凳
ermutuxia 发表于 2012-11-26 16:45:53 |只看作者 |坛友微信交流群
蓝色 发表于 2012-11-26 12:05
把数据xx单独贴出来,看看到底是什么?
应该有比你这更简单的方法
呵呵!把数据放到3楼了。

使用道具

报纸
fgleric 发表于 2012-11-26 23:30:18 |只看作者 |坛友微信交流群
有有空格存在
replace xx1=subinstr(xx1," ","",.)
replace xx2=subinstr(xx2," ","",.)

使用道具

地板
蓝色 发表于 2012-11-27 00:48:32 |只看作者 |坛友微信交流群
1.你那个是字符型变量,空格是看不到的;
2、如果有空格,空格既然是字符就有长度,不同长度空格是不能用一个命令的,所有你那样替换当然不行了。

clear
gen length1=length(xx1)
gen length2=length(xx2)
list
gen d2=1
replace d2=0 if xx2=="  "         /*2 blank*/
replace d2=0 if xx2==" "         /*1 blank*/
replace d2=0 if xx2==""           /*0 blank*/

使用道具

7
蓝色 发表于 2012-11-27 00:49:36 |只看作者 |坛友微信交流群
. clear

. *(3 variables, 26 observations pasted into data editor)

. gen length1=length(xx1)

. gen length2=length(xx2)

. list

     +------------------------------------+
     | id   xx1   xx2   length1   length2 |
     |------------------------------------|
  1. |  1                     1         1 |
  2. |  2                     1         1 |
  3. |  3                     1         0 |
  4. |  4                     1         0 |
  5. |  5                     1         0 |
     |------------------------------------|
  6. |  6          EN         1         2 |
  7. |  7                     1         0 |
  8. |  8          EN         1         2 |
  9. |  9    EN               2         1 |
10. | 10                     1         1 |
     |------------------------------------|
11. | 11                     1         1 |
12. | 12                     1         1 |
13. | 13          EN         1         2 |
14. | 14          EN         1         2 |
15. | 15                     1         1 |
     |------------------------------------|
16. | 16          EN         1         2 |
17. | 17          EN         1         2 |
18. | 18          EN         1         2 |
19. | 19    EN               2         1 |
20. | 20                     1         0 |
     |------------------------------------|
21. | 21          EN         1         2 |
22. | 22          EN         1         2 |
23. | 23    EN               2         1 |
24. | 24          EN         1         2 |
25. | 25                     1         1 |
     |------------------------------------|
26. | 26                     1         1 |
     +------------------------------------+

. gen d2=1

. replace d2=0 if xx2=="  "
(0 real changes made)

. replace d2=0 if xx2=="   "
(0 real changes made)

. replace d2=0 if xx2==" "
(11 real changes made)

. replace d2=0 if xx2==""
(5 real changes made)

. list

     +-----------------------------------------+
     | id   xx1   xx2   length1   length2   d2 |
     |-----------------------------------------|
  1. |  1                     1         1    0 |
  2. |  2                     1         1    0 |
  3. |  3                     1         0    0 |
  4. |  4                     1         0    0 |
  5. |  5                     1         0    0 |
     |-----------------------------------------|
  6. |  6          EN         1         2    1 |
  7. |  7                     1         0    0 |
  8. |  8          EN         1         2    1 |
  9. |  9    EN               2         1    0 |
10. | 10                     1         1    0 |
     |-----------------------------------------|
11. | 11                     1         1    0 |
12. | 12                     1         1    0 |
13. | 13          EN         1         2    1 |
14. | 14          EN         1         2    1 |
15. | 15                     1         1    0 |
     |-----------------------------------------|
16. | 16          EN         1         2    1 |
17. | 17          EN         1         2    1 |
18. | 18          EN         1         2    1 |
19. | 19    EN               2         1    0 |
20. | 20                     1         0    0 |
     |-----------------------------------------|
21. | 21          EN         1         2    1 |
22. | 22          EN         1         2    1 |
23. | 23    EN               2         1    0 |
24. | 24          EN         1         2    1 |
25. | 25                     1         1    0 |
     |-----------------------------------------|
26. | 26                     1         1    0 |
     +-----------------------------------------+


使用道具

8
fgleric 发表于 2012-11-27 01:20:57 |只看作者 |坛友微信交流群
蓝色 发表于 2012-11-27 00:49
. clear

. *(3 variables, 26 observations pasted into data editor)
赞!
much better than my suggestion!

使用道具

9
蓝色 发表于 2012-11-27 01:25:58 |只看作者 |坛友微信交流群
可以直接
egen  d2=group(xx2)
然后再替换

使用道具

10
ermutuxia 发表于 2012-11-27 09:46:13 |只看作者 |坛友微信交流群
蓝色 发表于 2012-11-27 01:25
可以直接
egen  d2=group(xx2)
然后再替换
谢谢蓝色版主!

使用道具

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

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

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

GMT+8, 2024-5-22 11:20