楼主: ywh19860616
7668 4

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

已卖:3份资源

学术权威

32%

还不是VIP/贵宾

-

威望
0
论坛币
725 个
通用积分
4238.2536
学术水平
864 点
热心指数
1001 点
信用等级
646 点
经验
116372 点
帖子
3968
精华
0
在线时间
7743 小时
注册时间
2009-9-3
最后登录
2025-9-7

楼主
ywh19860616 发表于 2013-8-5 13:24:09 |AI写论文

+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
}


已有 2 人评分学术水平 热心指数 信用等级 收起 理由
李龙华 + 1 + 1 + 1 观点有启发
ywh19860616 + 5 + 5 + 5 可以,谢谢您

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

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

藤椅
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
拉您入交流群
GMT+8, 2025-12-5 22:47