<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />폴더에서 텍스트 파일 세트를 열고 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" );
이것은 작동합니다 (스크립트에서 발췌 편집됨)
이름 = 왼쪽 ( 와이 [ 1 ] , 길이 ( 와이 [ 1 ] ) - 4 ) ;
열려 있는 (
"C:jmp\" || 와이 [ 나 ] ,
기둥 ( 계정 번호 = 성격 , . = 생략 ) ,
가져오기 설정 (
라인 끝 ( CRLF , CR , LF ) ,
필드 끝 ( 반점 ) ,
스트립 따옴표 ( 1 ) ,
아포스트로피를 따옴표로 사용 ( 0 ) ,
전체 파일 스캔 ( 1 ) ,
라벨 ( 0 ) ,
열 이름 시작 ( 1 ) ,
데이터 시작 ( 1 ) ,
읽을 줄 ( 모두 ) ,
연도 규칙 ( "10-90" )
)
) << 새 열 ( "원천" , 성격 , 각각의 값을 설정 ( 이름 ) ) ;
유일한 변경 사항은 New Column() 내부의 코드와 배치입니다.
그러나 각 테이블에 새 열을 추가하는 대신 Concatenate()의 "소스 열 만들기" 옵션을 사용할 수도 있습니다.
아래 스크립트를 시도해 보세요. Concatenate()의 내장 기능이 소스 열을 처리할 수 있도록 하는 이 문제에 대한 대체 접근 방식입니다.
내 경로 = "C:\jmp" ;
와이 = 디렉토리의 파일 ( 내 경로 ) ;
//y에서 텍스트가 아닌 모든 파일을 제거합니다.
을 위한 ( 나 = N개 품목 ( 와이 ) , 나 > 0 , 나 --,
만약에 ( 로 끝나다 ( 와이 [ 나 ] , "txt" ) ,
,
다음에서 제거 ( 와이 , 나 )
)
) ;
N = N개 품목 ( 와이 ) ;
//open() 표현식의 목록 y1을 만듭니다.
y1 = {} ;
을 위한 ( 나 = 1 , 나 <= N , 나 ++,
y1 [ 나 ] = 구문 분석 (
평가 삽입 (
"열기(mypath||\!"^y ^\!",columns(계정 번호 = 문자, . = 생략 ),
가져오기 설정(
줄 끝(CRLF, CR, LF),
필드 끝(쉼표),
스트립 인용문( 1 ),
아포스트로피를 따옴표( 0 )로 사용하세요.
전체 파일 스캔( 1 ),
라벨( 0 ),
열 이름 시작( 1 ),
데이터 시작( 1 ),
읽을 줄(전체)
))"
)
)
) ;
// (열기 및) 파일 연결
평가 ( y1 [ 1 ] ) << 사슬 같이 잇다 (
평가 목록 ( y1 [ 2 :: N ] ) ,
소스 열 만들기
) ;
//하위 파일 닫기
을 위한 ( 나 = 1 , 나 <= N , 나 ++,
닫다 ( 데이터 테이블 ( 와이 [ 나 ] ) , 노세이브 )
) ;