楼主: fujingchi
8000 19

[数据管理求助] STATA文件拆分求助 [推广有奖]

11
chrisky 发表于 2014-8-9 16:18:12
夏目贵志 发表于 2014-8-8 01:30
这个会把每行都单独拆出来的。楼主可能不是想这样吧。我觉得应该先用levelsof找出Var1的可能值,然后fore ...
对。我理解错楼主的意思了。您提供的方法可行。

12
fujingchi 发表于 2014-8-10 09:51:39
谢谢各位的热心解答。已经解决。
我用的方法与10楼的类似。
谢谢各位!

13
fujingchi 发表于 2014-8-10 10:55:15
夏目贵志 发表于 2014-8-8 10:22
把 datafile1 datafile2 datafile3换成你的数据名就好了。可以不止3个。save的目录也可以自己改。
抱着学习的目的,今天我用你的方法试了下,出了点问题,我的程序是. program per_ctry
  1. levelsof  PERSON_CTRY_CODE,clean
  2. local levelsofPERSON_CTRY_CODE=r(levels)
  3. foreach value in `levelsofPERSON_CTRY_CODE'{
  4. preserve
  5. keep if PERSON_CTRY_CODE ==`value'
  6. save C:\Users\fujc\Desktop\TEMP\`value'.dta
  7. restore
  8. }
  9. end

我事先读入了数据文件,然后运行上面的程序,结果显示
type mismatch
r(109);


请您帮我看看问题出在哪?PERSON_CTRY_CODE的值两位数字或英文或者为空,type是str2,format是%2s。


14
fujingchi 发表于 2014-8-10 14:14:05
用10楼的方法又试了一下,这次我只用了前100组数据,这样不同的PERSON_CTRY_CODE值只有8个,还是出错,不过错误提示是  BE not found  ,BE是PERSON_CTRY_CODE中的第一个值。
如果我用全部数据进程序的话不同的PERSON_CTRY_CODE的值有170多个。错误信息就显示type mismatch。
这是否意味着170多个值超出了r(levels)的存储范围?

15
夏目贵志 发表于 2014-8-10 22:11:57
fujingchi 发表于 2014-8-10 10:55
抱着学习的目的,今天我用你的方法试了下,出了点问题,我的程序是. program per_ctry
  1. levelsof  P ...
试试line 5改成keep if PERSON_CTRY_CODE=="`value'"
这个应该是type mismatch的地方吧。本来的程序假定这个是numerical变量。你用string的话肯定会mismatch的。

16
夏目贵志 发表于 2014-8-10 22:14:53
fujingchi 发表于 2014-8-10 14:14
用10楼的方法又试了一下,这次我只用了前100组数据,这样不同的PERSON_CTRY_CODE值只有8个,还是出错,不过 ...
BE被stata理解成了变量名所以才会说BE not found。用我上一帖说的办法应该能解决。还是同样的问题

17
fujingchi 发表于 2014-8-11 08:46:14
夏目贵志 发表于 2014-8-10 22:11
试试line 5改成keep if PERSON_CTRY_CODE=="`value'"
这个应该是type mismatch的地方吧。本来的程序假定 ...
谢谢你,昨晚我思考了一下,也认为应该是这样。不过验证要明天了,今天还有另外事情。

18
fujingchi 发表于 2014-8-12 09:11:33
夏目贵志 发表于 2014-8-10 22:11
试试line 5改成keep if PERSON_CTRY_CODE=="`value'"
这个应该是type mismatch的地方吧。本来的程序假定 ...
还是不行,这次出来的提示是   
invalid '`'
r(198);

我用的是STATA12

19
fujingchi 发表于 2014-8-12 10:50:20
fujingchi 发表于 2014-8-12 09:11
还是不行,这次出来的提示是   
invalid '`'
r(198);
这个问题已解决,问题出在save上,我在·value'前面加个数字就解决了。但有新的问题出现,只分离出了81个文件程序就结束了,而实际上可以分离出170来个文件。是不是r()只能存储81个值?

20
夏目贵志 发表于 2014-8-12 23:58:29
fujingchi 发表于 2014-8-12 10:50
这个问题已解决,问题出在save上,我在·value'前面加个数字就解决了。但有新的问题出现,只分离出了81个 ...
。。。\是escape·的所以会有问题。。。

你可以先把文件手动拆成两个或者三个再用那个程序。macro有最大长度限制

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

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