打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试从文件夹中打开一组文本文件并将数据连接到一个文件中,其中 txt 文件的名称作为列之一。
我附上了打开所选文件夹中所有文本文件的代码。 但是,我无法使用文件名创建列。
任何人都可以在脚本中帮助将数据(值)插入数据表的列中。
谢谢
高里
回复:打开一个文件夹中的所有txt文件,将数据连接到一个具有源名称的文件中您也可以使用此脚本来执行此操作,该脚本是从
//跳转到JMP脚本
//作者:Wendy Murphrey 和 Rosemary Lucas
// 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文件,将数据连接到一个具有源名称的文件中这应该可以工作(从您的脚本中编辑摘录)
姓名=剩下(是的[ 1 ] ,长度(是的[ 1 ] ) - 4 ) ;
打开(
"C:jmp\" ||是的[一世] ,
列(帐号=特点, . =忽略) ,
导入设置(
行结束( CRLF ,铬,如果) ,
场结束(逗号) ,
剥离行情( 1 ) ,
使用撇号作为引号( 0 ) ,
扫描整个文件( 1 ) ,
标签( 0 ) ,
列名开始( 1 ) ,
数据开始( 1 ) ,
要阅读的行(全部) ,
年份规则( “10-90” )
)
) <<新列( “资源” ,特点,设置每个值(姓名) ) ;
唯一的变化是 New Column() 中的位置和代码。
但是您也可以使用 Concatenate() 的“创建源列”选项,而不是向每个表添加新列。
试试下面的脚本。解决此问题的另一种方法,它还允许 Concatenate() 的内置功能处理源列。
我自己的路= "C:\jmp" ;
是的=目录中的文件(我自己的路) ;
//从y中删除所有非文本文件
为了(一世= N 项(是的) ,一世> 0 ,一世--,
如果(以。。结束(是的[一世] , “文本” ) ,
,
从...除去(是的,一世)
)
) ;
n = N 项(是的) ;
//制作open()表达式的列表y1
y1 = {} ;
为了(一世= 1 ,一世<= n ,一世++,
y1 [一世] =解析(
评估插入(
“打开(我的路径||\!”^y ^\!",columns(Acct num = 字符, . = 省略),
导入设置(
行尾(CRLF,CR,LF),
字段结束(逗号),
剥离引号(1),
使用撇号作为引号(0),
扫描整个文件(1),
标签(0),
列名开始(1),
数据开始(1),
要阅读的行数(全部)
))”
)
)
) ;
//(打开并)连接文件
评估( y1 [ 1 ] ) <<连接(
评估清单( y1 [ 2 :: n ] ) ,
创建源列
) ;
//关闭子文件
为了(一世= 1 ,一世<= n ,一世++,
关(数据表(是的[一世] ) ,节省)
) ;