이전에 만든 테이블을 다시 만들 스크립트를 데이터 테이블에 저장하려고 합니다. 이것은 꽤 광범위하고 여러 다른 테이블 열기/닫기, 요약 테이블 생성, 결합, 업데이트를 포함하는 추가 기능이며 결국 보고서에 필요한 유일한 데이터는 간단한 2열 테이블입니다. 사용자가 이 추가 기능을 한 번 실행할 수 있기를 바랍니다. 실수로 결과 테이블을 닫은 경우 원래 테이블에 다시 만들 수 있는 스크립트가 저장되므로 추가 기능을 다시 실행할 필요가 없습니다. 최종 테이블 및 분석 창.
잘만되면 그것은 의미가 있습니다!
내가 겪고 있는 문제는 최종 테이블이 추가 기능 스크립트 중에 생성된 많은 테이블 중 하나의 요약이라는 것입니다. 그래서 <<테이블 스크립트 가져오기 기능을 사용하면 결과는 "더 이상 존재하지 않는 데이터 테이블"<<요약......등입니다. <<테이블 복사 스크립트 기능을 사용하고 싶습니다. 실제로 각 셀의 열 이름과 값을 저장하기 때문입니다. 이것이 바로 제가 원하는 것입니다! 그러나 추가 기능 스크립트 내에서 이 작업을 수행하는 방법을 알 수 없습니다. 테이블 복사 스크립트는 변수나 표현식으로 저장할 수 있는 어떤 것도 반환하지 않고 나중에 붙여넣을 수 있도록 정보를 클립보드에 복사하기만 합니다.
sum<<DELETE scripts=""></DELETE>
이것은 내가 시도했지만 작동하지 않는 한 가지 예입니다. dt는 이 스크립트를 저장하려는 원래 테이블입니다. sum은 스크립트 내에서 다시 만들려는 테이블입니다.
이것도 가능한가요???
다음은 이를 수행하는 한 가지 방법을 보여주는 간단한 스크립트입니다.
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dtSum = dt << Summary(
Group( :sex ),
Mean( :height ),
Freq( "None" ),
Weight( "None" ),
link to original data table(0)
);
Eval(
Parse(
Eval Insert( "\[dt << New Table Script("Summary Table Script", ^dtSum << get script^)]\" )
)
);
해당 스크립트를 내 테이블에 어떻게 저장합니까?
요약 테이블을 다른 스크립트로 저장하는 코드를 추가한 다음 기본 스크립트에서 요약 테이블을 다시 만드는 테이블 스크립트를 실행하기만 하면 됩니다.
내 스크립트의 결과 테이블은 기본적으로 "Position" 및 "N Rows"의 2개 열입니다. 이 테이블은 긴 추가 기능 중에 생성된 테이블의 요약이며 기본 테이블의 열에 대한 요약이 아닙니다. 현재 테이블의 데이터(예: 요약, 스택 등)를 사용하여 테이블을 생성하는 스크립트를 사용할 수 없습니다. 내 기본 테이블에 저장할 수 있는 스크립트에 결과 테이블의 정확한 값을 어떻게든 저장해야 합니다. 이 같은:
New Table( "Positions of'n-1 base'",
Add Rows( 32 ),
New Column( "Position",
Numeric,
"Nominal",
Format( "Best", 10 ),
Set Values(
[1, 2, 3, 6, 8, 9, 11, 16, 18, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 46, 48, 63, 65, 68]
)
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 20, 0 ),
Set Values(
[13, 52, 65, 52, 65, 65, 65, 52, 52, 65, 52, 31, 28, 23, 13, 21, 14, 17,
9, 5, 4, 56, 1, 4, 5, 3, 55, 65, 65, 52, 13, 13]
)
)
)
하지만 내 스크립트 내에서 그렇게 하는 방법을 알 수 없습니다. 이 스크립트를 가져오는 방법이나 기본 테이블에 저장하는 방법을 모르겠습니다.
내 계획은 결과 테이블이 처음 열릴 때 즉시 스크립트를 가져오고 기본 테이블의 새 테이블 스크립트에 저장하여 결과 테이블이 닫히면 기본 테이블 스크립트를 사용하여 다시 만들 수 있도록 하는 것이었습니다.
그게 더 말이 되나요?
안녕 @aallman ,
뭔지 좀 헷갈리네요 바로 그거죠 하려고 시도하고 있지만 이전에 소스 데이터 테이블을 쌓은 다음 출력 데이터 테이블을 표로 작성해야 했지만 이전에 수행한 작업과 다소 비슷하게 들립니다. 일부 새 데이터를 원본 데이터 테이블에 연결했습니다.
다음은 소스 dt에 작성된 스택 스크립트가 있는 위치에 대한 몇 가지 예제 코드입니다.
Data Table( "Analysis" ) << Stack(
columns(
:X1,
:X2,
:X3,
:X4,
:X5,
:X6
),
Source Label Column( "Test Apparatus" ),
Stacked Data Column( "Data" )
);
Current Data Table() << Set Name( "Data Stack" ) <<
New Script(
"Fit Y by X of Data by Source",
Oneway(
Y( :Data ),
X( :Source ),
Means( 1 ),
Mean Diamonds( 1 ),
By( :Test Apparatus )
)
);
Data Table( "Data Stack" ) << New Column( "Date-Time",
"Ordinal",
Formula( :Date + :Time ),
Format( "m/d/y h:m:s" )
);
Data Table( "Data Stack" ) << Group Scripts(
"Run these after stacking",
{"Tabulate by Lot (run after stacking)",
"Tabulate by Apparatus (run after stacking)"}
);
Data Table( "Data Stack" ) << Move Script Group(
"Run these after stacking",
to last
);그리고 스크립트를 새로 쌓인 데이터 테이블로 이월합니다. 또한 "스태킹 후 실행"이라는 제목으로 그룹화된 스크립트를 기본 dt에 저장했으며, 이 스크립트도 새로 쌓인 데이터 테이블로 전달됩니다.
비슷한 방식으로 문제에 접근할 수 있을 것이라고 생각합니다.
행운을 빌어요!,
DS