楼主: ywh19860616
5851 4

[编程问题求助] 如何利用循环操作多个数据文件 [推广有奖]

学术权威

32%

还不是VIP/贵宾

-

威望
0
论坛币
870 个
通用积分
3477.1298
学术水平
854 点
热心指数
991 点
信用等级
637 点
经验
116346 点
帖子
3976
精华
0
在线时间
7729 小时
注册时间
2009-9-3
最后登录
2023-12-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在c:\file下我同时放了data_1.csv,data_2.csv,data_3.csv三个文件,文件第一行没有名称
文件的格式为wide形式的,即
1 2
3 4
5 6
7 8
我想操作把wide形式变为long形式,即把两列堆积为一列
1
3
5
7
2
4
6
8
然后分别保存为data_1.dta,data_2.dta,data_3.dta
下面我写了一段代码,但是不知道怎么修改

cd c:\file
local myfilelist   : dir . files "*.csv"
foreach filename of local myfilelist {
  insheet using `"`filename'"',clear
  g n=_n
  reshape long v, i(n) j(i)
  sort i n
  drop n
  sort i

  rename v var    /*因为我的csv数据都是没有行名的,所以导入到stata时都是自动命名为var,我这句想在保存前更名为   
  var_1,var_2,var_3形式,不知道如何操作*/
  
save `filename'.dta, replace
}

请老师指导


二维码

扫码加我 拉你入群

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

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

关键词:数据文件 filename insheet foreach replace 如何

一份耕耘,一份收获。
沙发
voodoo 发表于 2013-8-5 15:28:19 |只看作者 |坛友微信交流群
cd c:\file
local myfilelist   : dir . files "*.csv"
foreach filename of local myfilelist {
  insheet using `"`filename'"', clear
  g n=_n
  reshape long v, i(n) j(i)
  sort i n
  drop n
  sort i

local cnt = substr(`"`filename'"', 6, 1)
rename v var_`cnt'

local filenm = subinstr(`"`filename'"', ".csv", ".dta", .)
save `"`filenm'"', replace
}


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 可以,谢谢您

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

藤椅
ywh19860616 发表于 2013-8-5 16:07:09 |只看作者 |坛友微信交流群
voodoo 发表于 2013-8-5 15:28
cd c:\file
local myfilelist   : dir . files "*.csv"
foreach filename of local myfilelist {
谢谢voodoo老师
一份耕耘,一份收获。

使用道具

板凳
ywh19860616 发表于 2013-8-5 19:09:35 |只看作者 |坛友微信交流群
voodoo 发表于 2013-8-5 15:28
cd c:\file
local myfilelist   : dir . files "*.csv"
foreach filename of local myfilelist {
voodoo老师,本来还想请教您问题的,现在已经自己解决了,打扰您了,
祝好。
一份耕耘,一份收获。

使用道具

报纸
喵呜的星期八 学生认证  发表于 2023-2-22 09:49:06 |只看作者 |坛友微信交流群
voodoo 发表于 2013-8-5 15:28
cd c:\file
local myfilelist   : dir . files "*.csv"
foreach filename of local myfilelist {
您好我也有个问题想要问一下,我在处理三个文件之后,想把处理好的文件保存在另外一个路径下,我用了暂元符号,但是保存的时候一直提示invalid "`"。命令如下:
global dir2 "D:process"
foreach file in 高管团队断裂带1 高管团队断裂带2 高管任期1 高管任期2{
import excel using `file',firstrow case(lower) clear
labone,n(1)
drop in 1/2
destring _all,replace
save $dir2\`file',replace
}

使用道具

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

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

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

GMT+8, 2024-4-28 15:50