날짜여러분, 안녕하세요,
다음과 같은 데이터베이스가 있습니다(여기에 요약되어 있습니다).

이 데이터베이스는 지금까지 잘 작동하는 스크립트에서 비롯되었지만 마지막 열을 사용하면 다른 열과 다른 마지막 기간을 계산할 수 있습니다.
이 마지막 열의 값은 개체에 해당하는 OP를 나타냅니다.
예를 들어 첫 번째 줄의 경우 값 60은 개체 2041에 해당하며 각 줄에 대해 기간 2041 = 종료 날짜 2041 - 시작 날짜 2041 등을 허용하는 공식이 필요합니다.
값이 0이면 기간 2041에 값 0을 할당할 수 있습니다.
등등..
저는 아래 스크립트로 시작했습니다.
Names Default To Here(1);
dt = current data table();
If( !Is Missing(:"valeur ST1-2"n),
For Each Row(
idx = dt[row(), :"valeur ST1-2"n]
dt[idx, durée[idx]] = dt[idx, date fin[idx]] - dt[idx, date début[idx]];
),
0
);
데이터 접근답장: 날짜다음은 원하는 것을 달성하는 데 사용할 스크립트입니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Set the display format to a JMP Duration format
:"valeur ST1-2"n << format("hr:m:s");
// Loop through the rows and assign the new values
For Each Row(
If( :"valeur ST1-2"n != 0,
:"valeur ST1-2"n = :Date fin 2041 -
:Date début 2041,
:"valeur ST1-2"n = 0
)
);답장: 날짜- 값 60이 2041에 해당하고 값 82가 2000에 해당한다는 것을 어떻게 알 수 있습니까?그리고 valeur ST1-2 값 68로 무엇을 합니까?
- 제공된 예제 데이터 테이블에는 2000년 날짜에 대한 열이 없습니다.
- 어떤 열을 사용할지 결정하는 규칙이 식별 가능하거나 ST1-2 값 목록이 함께 제공되는 경우 JSL은 다양한 Valeur ST1-2 값에 대해 다른 계산을 사용하도록 쉽게 변경할 수 있습니다. 다른 값에 사용할 열입니다.
답장: 날짜여기에서는 데이터베이스가 축소되지만 ST1-2 값 열의 각 값에 대해 열을 사용하면 OP 값과 각 개체를 연결할 수 있습니다(축소된 데이터베이스에서는 열 711-2041-9916임).
첫 번째 줄에서 값 60은 2041에 해당합니다.

그래서 각 라인마다… 2000에 해당하는 82의 경우 이는 하나의 예일 뿐이지만 이는 두 번째 줄의 열 2000이 값 82로 채워짐을 의미합니다.
답장: 날짜당신의 답변에 감사드립니다 !
이는 첫 번째 줄에서 작동하지만 "ST1-2 값" 열의 값이 변경되므로 나중에 다시 계산해야 하는 기간이 동일하지 않습니다.
예를 들어 세 번째 줄의 경우: ST1-2 값 = 82 및 82는 객체 2000에 해당하므로 세 번째 줄의 기간을 2000 = 종료 날짜 2000 - 시작 날짜 2000으로 만들어야 합니다.
이는 여기 중간 데이터베이스에 각 개체(해당 OP 내부의 열 711-2041-9916)에 대한 OP 할당 개요를 표시하는 목적입니다.
목표는 기간 열을 교체하는 것이며 "ST1-2 값" 열은 수정되지 않습니다.
내 스크립트가 올바르게 작동하지 않습니다.
Names Default To Here(1);
dt14 = current data table();
dur_cols = Filter Each( {col_name}, dt14 << Get Column Names( "String", Continuous ),
Starts With( col_name, "Durée" )
);
fin_cols = Filter Each( {col_name}, dt14 << Get Column Names( "String", Continuous ),
Starts With( col_name, "Date fin" )
);
debut_cols = Filter Each( {col_name}, dt14 << Get Column Names( "String", Continuous ),
Starts With( col_name, "Date d" )
);
// for indexing later
num_colnr = Transform Each( {col_name}, dur_cols, Word( -1, col_name ) );
// Loop through the rows and assign the new values
For Each Row(
If( :"valeurs ST1-2"n != 0,
colidx = Loc(dt14[row(), num_colnr ] == :"valeurs ST1-2"n);
If( N items (colidx) > 0,
dt14[colidx,dur_cols] = Eval(dt14[colidx,fin_cols] - dt14[colidx,debut_cols]);
,
continue()
);
,
continue()
);
//show(colidx);
);
답장: 날짜나는 아래 스크립트가 당신이 원하는 것을 얻거나 적어도 그것에 가깝다고 생각합니다.
Names Default To Here( 1 );
dt14 = Current Data Table();
Lookup = Filter Each( {col_name}, dt14 << Get Column Names( "String", Continuous ),
Num( col_name ) > 0
);
dtArray = dt14 << Stack(
invisible,
columns( Lookup ),
Source Label Column( "theKeys" ),
Stacked Data Column( "valeur ST1-2" ),
Drop All Other Columns( 1 ),
Output Table( "Untitled 45.jmp" )
);
dtArray << delete rows( dtArray << get rows where( Is Missing( :"valeur ST1-2"n ) ) );
theLookup = Associative Array(
dtArray:"valeur ST1-2"n << get values,
dtArray:theKeys << get values
);
Close( dtArray, nosave );
// Loop through the rows and assign the new values
For Each Row(
row = Row();
If( :"valeur ST1-2"n != 0,
lookup = theLookup[:"valeur ST1-2"n];
If( :"valeur ST1-2"n == As Column( lookup ),
As Column( "Durée " || theLookup[:"valeur ST1-2"n] ) =
Num(
As Column( "Date fin " || theLookup[:"valeur ST1-2"n] )
-As Column( "Date début " || theLookup[:"valeur ST1-2"n] )
);
Continue();
);
,
Continue()
);
);답장: 날짜당신의 답변에 감사드립니다 !
처음 두 줄에서는 작동하는 것 같지만 ST1-2 값이 변경되면 오류가 발생합니다.
4번째 줄의 경우 기간 2231은 0이고 종료 날짜 2231 - 시작 날짜 2231의 차이가 있어야 합니다(4번째 줄에서 ST1-2 값은 82이고 82는 개체 2231에 해당하기 때문입니다).

내가받는 오류 메시지는 다음과 같습니다.

개체가 다른 OP에 할당될 수 있으므로 "TheLookup" 테이블에 불일치가 있을 수 있습니다.
아래 예를 들면: "theKeys" = 2041의 경우 "ST1-2 value" 값은 "60" 및 "47"과 같습니다.

답장: 날짜키를 결정하기 위해 2041, 711, 2231이라는 이름의 모든 열을 함께 가져오고 값 60이 열 valeur ST1-2에서 발견되면 연관 배열을 조회하여 2241을 반환하는 연관 배열이 생성됩니다. 47이 입력되면 2241도 반환됩니다. 82가 발견되면 2231이 반환됩니다.2041, 711, 2231 등의 열에 있는 숫자는 Valeur ST1-2에서 찾을 수 있는 다양한 숫자를 가지고 있다고 가정했습니다.
사용 중인 샘플 데이터 표를 첨부해 주시면 현재 발생한 문제를 파악해 보겠습니다.