스크립트를 사용하여 xls 파일을 jmp로 가져오는 데 문제가 있습니다.
행 "7"을 헤더로 사용하여 이 파일을 가져오고 새 열 "Lot id" 채우기 데이터를 B3 셀 데이터(B6C141-02B5)로 새 열에 추가하고 싶습니다.
어떻게 할 수 있습니까?
감사합니다

txNelson과 Ian이 언급했듯이 데이터 테이블에는 통계 분석을 위한 정말 좋은 형식이 없지만 안타깝게도 업계에서는 특히 스프레드시트 도구를 주로 사용하는 경우에 자주 발생합니다. 통계 데이터는 가능할 때마다 직사각형 형태의 열과 행에 있어야 합니다. 그렇지 않으면 훨씬 더 효율적인 벡터와 행렬을 사용하는 대신 계산을 위해 각 셀을 지정해야 합니다. 이것이 Ian이 유사한 방식으로 수행한 것처럼 txNelson이 시트를 두 번 가져와 정보를 추출한 이유입니다.
얼마 전에 저는 Excel에서 데이터를 가져오는 팁에 대한 발견 프레젠테이션을 했습니다. 여전히 유효하다고 생각합니다. Get-around-common-pitfalls-working-with-Excel-data-in-JMP(2016 JMP Discovery Summit Europe)
또한 Excel에서 가져오기에 대한 일부 블로그를 작성했습니다. 귀하와 다른 경우이지만 다른 상황에 유용할 수 있습니다.
Excel 및 JMP에 대한 Martin의 블로그
약간의 JSL을 알고 있어야 한다고 생각합니다. 이것이 시작하는 데 도움이 될 것입니다. '최상의' 접근 방식은 주어진 예를 넘어서는 데이터 구조에 대해 가정할 수 있는 것과 가정할 수 없는 것에 따라 결정됩니다.
이 코드는 전혀 강력하지 않으며 파일이 '다운로드' 폴더에 있다고 가정합니다. '도움말 > 설명서 > 스크립팅 가이드'를 보면 무엇을 하는지 알 수 있을 것입니다(코딩 경험이 얼마나 되는지에 따라 다름).
NamesDefaultToHere(1);
dt = Open("$DOWNLOADS/test_import.xlsx");
lid = Column(dt, 2)[2];
colNames = {};
InsertInto(colNames, Column(dt, 1)[11]);
InsertInto(colNames, Column(dt, 2)[11]);
InsertInto(colNames, Column(dt, 3)[7]);
InsertInto(colNames, Column(dt, 4)[7]);
InsertInto(colNames, Column(dt, 5)[7]);
InsertInto(colNames, Column(dt, 6)[7]);
InsertInto(colNames, Column(dt, 1)[2]);
dt << deleteRows(1::11);
for(c=1, c<=NItems(colNames), c++, Column(dt, c) << setName(colNames[c]));
Column(dt, colNames[NItems(colNames)]) << setValues(Repeat(lid, NRows(dt)));
dt << setName("Data for lot "||lid);다음은 데이터를 입력하는 스크립트입니다.
JMP Excel 마법사를 사용하여 대화식으로 파일을 연 다음 JMP가 생성한 소스 스크립트를 스크립트에 복사했습니다.스크립트는 파일을 두 번 읽습니다.먼저 데이터를 읽고 두 번째로 Lot ID를 읽습니다.그런 다음 가져올 Excel 파일을 선택할 수 있는 코드와 새 Lot ID 열을 만드는 데 필요한 JSL을 추가했습니다.
names default to here(1);
path = Pick File();
dt = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 13 ),
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( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
dtLotID = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 3 ),
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( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
lotID = dtLotID:Column 2[1];
close(dtLotID, nosave );
dt << New Column("Lot ID", Character, set each value(lotID));