楼主: lpchxj
4661 4

[编程问题求助] stata批量读取csv文件,如何跳转? [推广有奖]

  • 3关注
  • 5粉丝

教授

54%

还不是VIP/贵宾

-

威望
0
论坛币
42 个
通用积分
10.1518
学术水平
6 点
热心指数
14 点
信用等级
1 点
经验
3623 点
帖子
309
精华
0
在线时间
2256 小时
注册时间
2006-12-3
最后登录
2024-6-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的目标:读取某个文件夹下所有文件,然后对每一个文件执行操作。
我的问题:如果当读取某个文件,进行初步操作后,没有了数据,那么我想让他自动跳到下一个文件。如何办?
程序如下:

clear
cd G:\ 2014\
local ff : dir . files "*.csv"                     
foreach f of local ff{                           
insheet using  "`f'",clear

drop if TradePrice==0   
drop if TradeVolume==0   
drop if s1==0   
drop if sell1Volume==0
drop if b1==0                                                            
drop if buy1Volume==0                                                           
/*在这里我希望做一个判断:如果经删除后没有了观测数据,那么就自动跳转、读取下一个csv文件;如果还有数据,那么则执行下列计算.这一块的程序怎么写??*/                                                         
                                    
gen Q=-1 if BS==2      
replace Q=1 if BS==1   
gen dQ=Q-Q[_n-1]  
local f=substr("`f'", 3, 6)                       
gen code="`f'"
save G:\x_`f'.dta,replace
set more off
}
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata replace foreach insheet 如何

沙发
夏目贵志 发表于 2016-7-12 00:09:50 |只看作者 |坛友微信交流群
  1. clear
  2. cd G:\ 2014\
  3. local ff : dir . files "*.csv"                     
  4. foreach f of local ff{                           
  5.         insheet using  "`f'",clear

  6.         drop if TradePrice==0   
  7.         drop if TradeVolume==0   
  8.         drop if s1==0   
  9.         drop if sell1Volume==0
  10.         drop if b1==0                                                            
  11.         drop if buy1Volume==0                                                           
  12.         /*如果经删除后没有了观测数据,那么就自动跳转、读取下一个csv文件;如果还有数据,那么则执行下列计算*/
  13.         if _N!=0 {                                                                       
  14.                 gen Q=-1 if BS==2      
  15.                 replace Q=1 if BS==1   
  16.                 gen dQ=Q-Q[_n-1]  
  17.                 local f=substr("`f'", 3, 6)                       
  18.                 gen code="`f'"
  19.                 save G:\x_`f'.dta,replace
  20.                 set more off
  21.         }
  22. }
复制代码

使用道具

藤椅
lpchxj 发表于 2016-7-12 09:30:49 |只看作者 |坛友微信交流群
虽然昨天自己已解决,但还是非常非常感谢您的答复!!!

使用道具

板凳
lpchxj 发表于 2016-7-12 09:45:28 |只看作者 |坛友微信交流群
夏目贵志 发表于 2016-7-12 00:09
比较来看,您的方法确实简单,但请问您的这个:  _N!  表示什么意思呢?再次感谢!

使用道具

报纸
夏目贵志 发表于 2016-7-12 23:50:03 |只看作者 |坛友微信交流群
lpchxj 发表于 2016-7-12 09:45
比较来看,您的方法确实简单,但请问您的这个:  _N!  表示什么意思呢?再次感谢!
表示observation的总数,和count之后的r(N)是一样的。

使用道具

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

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

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

GMT+8, 2024-6-15 10:52