Re: 포뮬러 콜론한 가지 질문: ENT4에는 2500의 기간이 포함되지만 ENT2에는 1749의 기간이 포함되지 않는 이유는 무엇입니까?
Re: 열 수식데이터베이스에 오류가 있어 데이터베이스를 업데이트했습니다!
의견 주셔서 감사합니다.
Re: 포뮬러 콜론수식을 사용하여 이 작업을 수행할 수 있지만 저는 스크립팅을 사용하여 이 작업을 수행합니다. 다음은 적어도 예제 데이터와 함께 작동하는 한 가지 예입니다.
Names Default To Here(1);
dt = Open("$DOWNLOADS/Test(1).jmp");
// get duration columns
dur_cols = Filter Each({col_name}, dt << Get Column Names("String", Continuous),
Starts With(col_name, "durée")
);
// for indexing later
num_colnr = Transform Each({col_name}, dur_cols, Output("Matrix"), Num(Word(-1, col_name)));
dt << New Column("DUREE TOT", Numeric, Continuous, << Set Each Value(
colidx = Loc(num_colnr > :T); // indices of num colums larger than :T value
If(N Items(colidx) > 0,
val = Sum(dt[Row(), dur_cols[colidx]]);
If(IsMissing(val),
0
,
val
);
,
0
)
));Re: 열 수식당신의 답변에 감사드립니다.
귀하의 코드에서 열 T의 요소와 비교하는 것 같지만 T의 값이 순서에 관계없이 (반드시 증가하지는 않음) 값이 될 수 있음을 지정하는 것을 잊었습니다. 작업의 진행 순서는 오름차순으로 정렬됩니다.
예를 들어 :
T = 690 / op = 47
T = 550 / op = 55
그리고 진행은 작업 순서를 따릅니다!
두 번째로, 내 데이터베이스에는 "h:m:s" 형식의 기간 T에 대한 기간 형식의 숫자 값이 있습니다.
Re: 포뮬러 콜론올바르게 이해했다면 내 솔루션이 여전히 작동해야 합니다. :1500, :1749,... 열이 :duree 1500, :duree 1749,... 열과 순서가 같다는 사실에만 의존합니다. 또한 JMP가 실제로 깔끔한 형식의 기간 값을 표시하더라도(제 생각에는) 여전히 초 단위입니다(예를 들어 열 설정에서 형식을 최상으로 변경하여 이를 확인할 수 있음).
Re: 열 수식코드에 문제가 있는 것 같아요.
여기서 문제는 "colidx" 변수 할당에 있습니다. 변수 T의 숫자를 비교하지 않고 이 숫자에 해당하는 작업(여기서는 노란색 열)을 비교합니다.
위의 예에서 첫 번째 줄은 다음과 같습니다.
if 첫 줄 ":1500" > 첫 줄 ":op" -> 기간 1500 추가
if 첫 줄 ":1749" > 첫 줄 ":op" -> 기간 1749 추가if 첫 줄 ":2100" > 첫 줄 ":op" -> 기간 2100 추가
if 첫 줄 ":2500" > 첫 줄 ":op" -> 기간 2500 추가
각 줄에 대해 이렇게하십시오 ...
Re: 포뮬러 콜론그래서 변경
colidx = Loc(num_colnr > :T);
에게
colidx = Loc(num_colnr > :"opé"n);
Loc(열 이름 대신 특정 행 사용) 및 num_colnr(숫자일 필요 없음)에 해당 변경 사항을 적용합니다.
Re: 열 수식
귀하의 답변에 감사드립니다. 귀하가 지정한대로 이미 "colidx"의 할당을 변경했습니다.
그러나 "Loc(열 이름 대신 특정 행 이름 사용) 및 num_colnr(숫자 필요 없음)에 해당 변경 사항을 적용해야 합니다."
좀 더 자세히 말씀해 주시겠습니까?
Re: 열 수식다음에 필요한 열을 선택하기 위해 이 코드로 num_colnr 값을 수정했습니다.
SNames = dt << Get Column Names(String, "Nominal");
For(i=1, i <= N 항목(Snames), i++,
sclmn = 열(Snames[i]);
쇼(sclmn);
);
이 코드를 사용하면 데이터베이스의 노란색 부분에 해당하는 모든 열을 가져올 수 있습니다.
그러나 "Loc"에 해당하는 변경 사항을 적용할 수 없는 것 같습니다.
Re: 포뮬러 콜론Names Default To Here(1);
dt = Open("$DOWNLOADS/Test (1).jmp");
// get duration columns
dur_cols = Filter Each({col_name}, dt << Get Column Names("String", Continuous),
Starts With(col_name, "durée")
);
// for indexing later
num_colnr = Transform Each({col_name}, dur_cols, Word(-1, col_name));
dt << New Column("DUREE TOT", Numeric, Continuous, << Set Each Value(
colidx = Loc(dt[Row(), num_colnr] > :"opé"n);
If(N Items(colidx) > 0,
val = Sum(dt[Row(), dur_cols[colidx]]);
If(IsMissing(val),
0
,
val
);
,
0
)
));
데이터 테이블 첨자
Re: 열 수식내 데이터베이스에는 900개의 서로 다른 열(노란색 열)이 있습니다. 이는 숫자 "num_colnr"이 많은 숫자가 포함된 목록임을 의미합니다.

나와 공유한 JSL 스크립트를 실행하면 다음과 같은 유형의 오류가 발생합니다.

위 그림의 num_colnr은 숫자 목록이지만
Re: 열 수식숫자로 변환하려면 "Num"을 추가합니다.
num_colnr = Transform Each({col_name}, dur_cols, Num(Word(-1, col_name)));
show(num_colnr);다음과 같은 유형의 오류가 발생합니다.

Re: 포뮬러 콜론데이터 테이블에 "711"이라는 열이 있습니까? 프랑스어로 된 오류 메시지를 이해하지 못하며 가장 좋은 추측은 다음과 같다는 것입니다.
Expecting a number or list of numbers at row 1 in access or evaluation of 'dt[ /*###*/Row(),num_colnr]', <BR />Bad Argument("1500"), dt[/*###*/Row(), num_colnr]
at line 14 in C:\Users\jarmo\Documents\Script.jsl
이는 "711"이라는 열이 누락되었음을 의미할 수 있습니다.
Re: 열 수식
예, 이것은 저의 첫 번째 열입니다(모든 노란색 열 중).
Re: 포뮬러 콜론좋아, 그러면 해당 열 중 하나(또는 그 이상)가 누락되었음을 나타내고 실제로 어떤 열이 있는지 알려주지 않을 수 있습니다. 따라서 duree 열에서 가져오는 내 논리가 잘못된 것일 수 있습니다.
Re: 열 수식네 아마 맞을 겁니다. 제 편을 들겠습니다.
소중한 도움 감사합니다!
열 수식여러분, 안녕하세요,
내 데이터베이스의 여러 열에 대해 수식을 작성하려고 합니다. 이해하기 쉽지 않습니다. 예를 사용하여 목표를 설명하겠습니다.

회색 부분:
여기에는 4가지 유형의 객체(ENT1,..,ENT4)가 있습니다. 각 객체는 진행 번호(T열)와 연관되어 있으며, 이 번호는 잘 정의된 작업과 연결되어 있습니다.
노란색 부분:
이 셀은 각 개체가 겪게 될 "번호"를 표시하고 이 번호를 작업과 연결합니다. 셀이 비어 있으면 개체가 이 작업을 수행하지 않는다는 의미입니다.
목표는 다음과 같습니다.
- 개체가 진행되었음을 알고 기간을 합산합니다. (예: ENT2 개체는 번호 1749에 있으므로 1500년에 이전에 수행한 작업은 관심이 없습니다.)
- ENT2 객체를 예로 들어보겠습니다. 지속 시간 2100과 지속 시간 2500을 추가해야 합니다. 이는 이 객체가 겪어야 하는 숫자이기 때문입니다.
당신의 도움을 주셔서 감사합니다,
감사합니다
자동화 및 스크립팅