打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试从文件夹中打开一组文本文件并将数据连接到一个文件中,并将 txt 文件的名称作为其中一列。
我已附加代码,可打开选定文件夹中的所有文本文件。 但是,我无法创建带有文件名的列。
任何人都可以帮助脚本将数据(值)添加到数据表的列中。
他克斯
高里
回复:打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中您还可以使用此脚本来完成此操作,该脚本是对
//跳转到JMP脚本
//作者:温迪·墨菲和罗斯玛丽·卢卡斯
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//第122页,Soultion 5.16
为了合并源文件名。
这里也有一个话题
我还整合了 MS 答案中的一些内容。 MS,我无法使用您的脚本来完成串联。
mypath = "C:\jmp\";
Set Current Directory( mypath );
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( Ends With( y[i], "txt" ),
,
Remove From( y, i )
)
);
n = N Items( y );
For( i = 1, i <= N Items( y ), i++,
sname=left(y[i],length(y[i])-4);
/* If the file is the first in the list, open it. Otherwise, open the table, concatenate with the main table, and close the table just opened. */
If( i == 1,
mainDt = Open( mypath || y[i] );
mainDt << New Column ("source", character, set each value ( sname )),
dt = Open( mypath || y[i] ) ;
dt << New Column ("source", character, set each value ( sname ));
mainDt = mainDt << Concatenate( dt, Append to First Table );
Close( dt, NoSave );
Wait( 0 );
)
);
/* Give the final table a name. */
mainDt<< Set Name( "Concatenated Files" );
回复:打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中谢谢,这非常有帮助
回复:打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中这应该有效(编辑脚本中的摘录)
姓名=左边( y [ 1 ] ,长度( y [ 1 ] ) - 4 ) ;
打开(
“C:jmp\” || y [我] ,
列(帐号=特点, 。 =忽略) ,
导入设置(
行结束(回车换行, CR ,如果) ,
场结束(逗号) ,
剥离报价( 1 ) ,
使用撇号作为引号( 0 ) ,
扫描整个文件( 1 ) ,
标签( 0 ) ,
列名开始( 1 ) ,
数据开始( 1 ) ,
要读的行(全部) ,
年份规则( “10-90” )
)
) <<新专栏( “来源” ,特点,设置每个值(姓名) ) ;
唯一的变化是 New Column() 中的放置和代码。
但您也可以使用 Concatenate() 的“创建源列”选项,而不是向每个表添加新列。
尝试下面的脚本。解决此问题的另一种方法还允许 Concatenate() 的内置功能处理源列。
我自己的路= “C:\jmp” ;
y =目录中的文件(我自己的路) ;
//从y中删除所有非文本文件
为了(我= N 项( y ) ,我> 0 ,我--,
如果(以。。结束( y [我] , “TXT” ) ,
,
从......中去除( y ,我)
)
) ;
n = N 项( y ) ;
//创建 open() 表达式的列表 y1
y1 = {} ;
为了(我= 1 ,我<= n ,我++,
y1 [我] =解析(
评估插入物(
“打开(mypath||\!”^y ^\!",columns(Acct num = 字符, . = 省略),
导入设置(
行尾( CRLF, CR, LF ),
字段结束(逗号),
剥离报价( 1 ),
使用撇号作为引号(0),
扫描整个文件( 1 ),
标签( 0 ),
列名开始( 1 ),
数据开始( 1 ),
待读行(全部)
))”
)
)
) ;
//(打开并)连接文件
评估( y1 [ 1 ] ) <<连接(
评估清单( y1 [ 2 :: n ] ) ,
创建源列
) ;
//关闭子文件
为了(我= 1 ,我<= n ,我++,
关闭(数据表( y [我] ) ,不保存)
) ;