데이터의 연도를 기준으로 테이블을 변수 이름으로 저장하려면 어떻게해야합니까?예를 들어, 2014.xlsx, 2015.xlsx의 두 가지 엑셀 파일이 있는데이 파일 (이 경우 {Product Events, Products, CodesFrmPLI}) 내에서 특정 워크 시트의 이름을 지정하기 위해 여러 파일을 선택한 후 자동화하고 싶습니다. 총 6 개의 JMP 테이블 : 이름 예는 Product_Events_2014, Product_Events_2015, Products_2014, Products_2015, CodesFrmPLI_2014, CodesFrmPLI_2015입니다.
Names Default To Here( 1 );
Close All( data tables );
Delete Symbols();
Directory = Pick Directory( "Select a directory" );
Files = Pick File(
"Select Data Set(s)",
Directory,
{"All Files|*", "JMP Files|jmp;jsl;jrn", "Excel Files|xlsx"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
Try( Open( Files[i],
Worksheets( NWorksheet = {"Product Events", "Products", "CodesFrmPLI"}),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
invisible
) )
));
Show(NWorksheet);
//*** 2014 Naming convention
For( i = 1, i <= N Items( Files ), i++,
if( Contains( Files[i] , "2014") > 0,
dt = Data Table(1);
dt << Save("Codes_2014.jmp");
dt = Data Table(2);
dt << Save("Products_2014.jmp");
dt = Data Table(3);
dt << Save("Product Events_2014.jmp");
//Close All(Data Tables, No Save);
)
);
//*** 2015 Naming convention
For( i = 1, i <= N Items( Files ), i++,
if( Contains( Files[i] , "2015") > 0,
dt = Data Table(4);
dt << Save("Codes_2015.jmp");
dt = Data Table(5);
dt << Save("Products_2015.jmp");
dt = Data Table(6);
dt << Save("Product Events_2015.jmp");
//Close All(Data Tables, No Save);
)
);제목 : Re : 어떻게 데이터의 올해 주어진 변수 이름으로 테이블을 저장합니까?나는 당신의 스크립트의 아래 재 작업이 당신이 원하는 곳으로 갈 것이라고 생각한다. 나는 매우 광범위한 테스트 환경을 가지고 있지 않았지만, 코드가 당신이 필요로하는 것과 아주 가깝다고 생각한다.
Names Default To Here( 1 );
Close All( data tables );
Delete Symbols();
Directory = Pick Directory( "Select a directory" );
Files = Pick File(
"Select Data Set(s)",
Directory,
{"All Files|*", "JMP Files|jmp;jsl;jrn", "Excel Files|xlsx"},
1,
0,
"",
"multiple"
);
// Place the names of the spreadsheets to be input into a list
spreadsheetList = {"Product Events", "Products", "CodesFrmPLI"};
For( i = 1, i <= N Items( Files ), i++,
// For this file, determine the year
If(
Contains( Files[i], "2014" ), theYear = "2014",
Contains( Files[i], "2015" ), theYear = "2015"
);
// Read in separately each separate spreadsheet
For( k = 1, k <= N Items( spreadsheetList ), k++,
// Create a list that will contain the current spreadsheet to
// be read in
extractList = {};
Insert Into( extractList, spreadsheetList[k] );
// Open the spreadsheet
Try(
dt = Open(
Files[i],
Worksheets( NWorksheet = extractList ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" ),
invisible
)
)
);
// The name for the JMP file is the same as the spreadsheet name,
// except for the Codes, so make the change
If( extractList[1] == "CodesFrmPLI",
extractList[1] = "Codes"
);
// Save the JMP file with the prescribed name
close( dt, save( extractList[1] || "_" || theYear || ".jmp" ) );
);
);
제목 : Re : 어떻게 데이터의 올해 주어진 변수 이름으로 테이블을 저장합니까?짐 고맙다. 이것은 효과가 있었다. 신속한 후속 조치 : 이제 테이블 조인과 데이터 조작을 원한다면 어디에서 이것이 가장 좋은 장소가 될까요?
문안 인사.
제목 : Re : 어떻게 데이터의 올해 주어진 변수 이름으로 테이블을 저장합니까?그냥 선을 지우면
close( dt, save( extractList[1] || "_" || theYear || ".jmp" ) );
데이터 테이블은 열린 상태로 유지됩니다. 따라서 초기 For () 루프에 대해 닫는 ")"다음에 원하는 조인 또는 계산을 추가 할 수 있습니다. 기본적으로, 현재 스크립트의 마지막 줄 다음에.