楼主: fujingchi
7184 19

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

  • 0关注
  • 0粉丝

大专生

76%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
491 点
帖子
50
精华
0
在线时间
42 小时
注册时间
2014-7-23
最后登录
2015-8-31

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现有一个文件一,格式如下
ID      VAR1    VAR2   ……
1          A
2          B
3          A
4          A
5          C
……      ……
N         ……

有N组数据,不同的VAR1值有n个(我的实际例子中有近100个)。现在我希望把文件一按照VAR1拆分成n个文件,并且这n个文件就按照A\B\C。。。命名。
请问有什么简便的方法吗?一个一个生成实在是效率低。本人菜鸟,请各位大神指教!
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata VaR 命名

沙发
chrisky 发表于 2014-8-7 19:32:18 |只看作者 |坛友微信交流群
  1. use DATABASE,clear
  2. local tn=_N
  3. forvalues i=1(1)`tn' {
  4.         use DATABASE,clear
  5.         local name = var1 in `i'
  6.         keep in `i'
  7.         save "`name'",replace
  8. }
复制代码

使用道具

藤椅
chrisky 发表于 2014-8-7 19:32:56 |只看作者 |坛友微信交流群
DATABASE改成你自己的数据集就好。

使用道具

板凳
réussite 发表于 2014-8-7 19:36:13 |只看作者 |坛友微信交流群
如果var1有多个值,拆分起来肯定会麻烦。其实程序不一定会很多,写好一段,复制粘贴,改动所需数值和文件名就好了,很快,一点都不慢。只是不明白为什么要拆分,可以设置不同的条件分析或者运算,没有必要拆分。

使用道具

报纸
SpencerMeng 在职认证  发表于 2014-8-7 19:41:18 |只看作者 |坛友微信交流群
我是来看二楼头像的

使用道具

地板
夏目贵志 发表于 2014-8-8 01:30:18 |只看作者 |坛友微信交流群
chrisky 发表于 2014-8-7 19:32
这个会把每行都单独拆出来的。楼主可能不是想这样吧。我觉得应该先用levelsof找出Var1的可能值,然后foreach来解决。

使用道具

7
fujingchi 发表于 2014-8-8 09:39:01 |只看作者 |坛友微信交流群
夏目贵志 发表于 2014-8-8 01:30
这个会把每行都单独拆出来的。楼主可能不是想这样吧。我觉得应该先用levelsof找出Var1的可能值,然后fore ...
你的理解是对的,但现在VAR1的可能值有很多,近100个。同时需要拆分的文件也很多,20多个,所以我想找一个比较便捷的方法。

使用道具

8
fujingchi 发表于 2014-8-8 09:39:58 |只看作者 |坛友微信交流群
chrisky 发表于 2014-8-7 19:32
谢谢你的回复,我去试试

使用道具

9
fujingchi 发表于 2014-8-8 09:41:30 |只看作者 |坛友微信交流群
réussite 发表于 2014-8-7 19:36
如果var1有多个值,拆分起来肯定会麻烦。其实程序不一定会很多,写好一段,复制粘贴,改动所需数值和文件名 ...
var1的值有90多个,类似的文件有20多个,如果这样一个一个拆分的话效率很低,所以想找找看有没有更快的办法

使用道具

10
夏目贵志 发表于 2014-8-8 10:22:13 |只看作者 |坛友微信交流群
  1. foreach datafile in datafile1 datafile2 datafile3 {
  2.         use `datafile', clear
  3.         levelsof var1, clean
  4.         local levelsofvar1 = r(levels)
  5.         foreach value in `levelsofvar1' {
  6.                 preserve
  7.                 keep if var1 == `value'
  8.                 save `value'.dta, replace
  9.                 restore
  10.         }
  11. }
复制代码

把 datafile1 datafile2 datafile3换成你的数据名就好了。可以不止3个。save的目录也可以自己改。

使用道具

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

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

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

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