사이클 문제반복되는 주기에서 알 수 없는 문제가 감지되었는데 누군가가 나를 도와줄 수 있기를 바랍니다.
첨부된 예제 스크립트를 참조하세요. 테이블을 생성합니다. 여기서의 아이디어는 열 1의 각 연속 실행에 일련 번호가 있는 이벤트로 레이블을 지정하고 싶다는 것입니다.
공식이 작동합니다. 그러나 테이블을 수정하거나 수식을 다시 실행하면 1회, 2회 또는 3회 주기 감지 오류가 발생합니다. 이것은 단지 예시 테이블일 뿐입니다. 실제 데이터 테이블에서 열 수식을 변경하거나 테이블에서 다른 편집을 수행하는 경우 때때로 모든 주기 무시를 최대 12번 눌러야 했습니다.
이 문제의 원인이 무엇인지 아는 사람이 있나요?
감사해요
New Table( "Cycle Problem",
Add Rows( 21 ),
New Table Variable( "P1", 3 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0]
)
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
Row() == 1, :P1 = 0,
:Column 1 == 1 & :Column 1[Row() - 1] == 0, :P1 = :P1 + 1,
:Column 1 == 1, :P1
)
),
Set Selected
)
)
자동화 및 스크립팅Re: 사이클 문제주기 경고가 무엇을 의미하는지 잘 모르겠습니다. 제가 보기에는 잘못된 경보인 것 같습니다. 하지만 그 사이에 다음 스크립트의 결과는 여러분이 달성하려는 결과이고 주기 문제는 없는 것 같습니다.
New Table( "Cycle Problem",
Add Rows( 21 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0]
)
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
Row() == 1, 0,
:Column 1 == 1 & :Column 1[Row() - 1] == 0, :Column 2[Row() - 1] + 1,
:Column 2[Row() - 1]
)
),
Set Selected
)
)
Re: 사이클 문제주기 문제는 :P1 테이블 변수 값을 설정하고 동일한 수식으로 비교하여 발생했을 가능성이 높습니다.
If(Row() == 1,
:P1 = 0
, :Column 1 == 1 & :Column 1[Row() - 1] == 0,
:P1 = :P1 + 1
, :Column 1 == 1,
:P1
)
다음과 같은 수식을 사용할 수 있습니다.
If(Row() == 1,
retval = 0
, :Column 1 == 1 & Lag(:Column 1) == 0,
retval = retval + 1
);
retval;

Lag()를 사용하면 열의 이전 값에 액세스할 수 있습니다.
Re: 사이클 문제안녕,
수식 열 자체를 지연시키는 것도 괜찮습니다. 즉, C1에 있는 값에 대해 C2열에서 다음 수식을 사용할 수 있습니다.
If( Row() == 1,
0,
Lag( :C2 ) + (Lag( :C1 ) == 0 & :C1 == 1)
)
Re: 사이클 문제@peng_liu , @jthi 및 @brady_brady ...
도움을 주셔서 감사합니다. 그러나 귀하가 제공한 스크립트는 제가 해야 할 일을 제대로 수행하지 못했고 수정하려고 했으나 작동하지 않았습니다. 특히 열 2의 번호 매기기는 열 1에 1이 있는 경우에만 나타나야 합니다. 열 1에 0이 있는 경우 열 2는 비어 있습니다. 이와 같이...

이를 수행하기 위해 추가 IF 문을 추가하려고 하면 스크립트가 실패합니다.
예를 들어, @peng_liu 스크립트로 수행한 작업은 다음과 같습니다.
New Table( "Cycle Problem",
Add Rows( 21 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0]
)
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
Row() == 1, 0,
:Column 1 == 1 & :Column 1[Row() - 1] == 0,
:Column 2[Row() - 1] + 1,
:Column 1 == 1, :Column 2[Row() - 1]
)
),
Set Selected
)
)
또한 관련될 수 있는 또 다른 문제도 발견했습니다. 제공한 원본 스크립트를 실행하면 열 2가 비어 있습니다. 그러나 임의의 수식을 사용하여 열 3을 추가하면 갑자기 값이 열 2에 나타납니다. 이는 다른 테이블에서도 발생합니다.
@brady_brady 저는 귀하의 솔루션이 제대로 작동할 수 있는지 확인하기 위해 여전히 작업 중입니다.
그동안 저를 도와줄 수 있는 추가 지침이 있나요?
모든 도움에 감사드립니다.
Re: 사이클 문제예를 들어 하나의 If 문을 끝에 추가할 수 있습니다.
Names Default To Here(1);
dt = New Table("Cycle Problem",
Add Rows(21),
New Column("Column 1",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0])
)
);
dt << new column("C", Numeric, Ordinal, Formula(
If(Row() == 1,
retval = 0;
, :Column 1 == 1 & Lag(:Column 1) == 0,
retval = retval + 1
);
If(:Column 1 == 1,
retval;
,
.
);
));

Re: 사이클 문제이것은 작동하는 것처럼 보이지만 번거롭습니다.
If( Row() == 1,
0,
If( :C1 == 1,
If( Lag( :C1 ) == 0,
Max( :C2[Index( 1, Row() - 1 )] ) + 1,
Lag( :C2 )
),
.
)
)
또 다른 옵션인 "C3" 열에 대한 수식은 다음과 같습니다.
If(
Row() == 1,
c = 0;
c;
,
:C1 == 0,
.
,
Lag( :C1 ) == 1,
Lag( :c3 )
,
c++;
c;
)
Re: 사이클 문제@jthi ! 효과가 있는 것 같습니다. 왜 별도의 IF 문에서는 작동하고 @peng_liu 수정에서와 같이 결합된 IF 문에서는 작동하지 않는지 잘 모르겠습니다.
하지만 더 중요한 것은 테이블 변수를 생성하면 문제가 발생하지만 스크립트 내에서 변수를 생성하면 문제가 발생하지 않는 이유는 무엇입니까?
Re: 사이클 문제또한 Col Cumulative Sum()을 사용할 수도 있습니다.
Names Default To Here(1);
dt = New Table("Cycle Problem",
Add Rows(21),
New Column("Column 1",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0])
)
);
dt << new column("C", Numeric, Ordinal, Formula(
If(:Column 1,
Col Cumulative Sum(Dif(:Column 1) == 1)
,
.
);
));Re: 사이클 문제정말 좋은 것 같아요.
Re: 사이클 문제@peng_liu , @jthi 및 @brady_brady 솔루션을 제공해 주셔서 감사합니다. 나는 특히 @jthi 의 솔루션을 좋아합니다. 저는 Col Cumulative Sum이 그런 식으로 사용될 수 있다는 것을 전혀 몰랐습니다. 매우 간단하고 효율적이며 우아합니다.
저는 아직도 JMP에서 변수가 어떻게 작동하는지 알아보려고 노력하고 있습니다. 아직 전체 그림이 있는지는 확실하지 않지만 작업 중입니다.
Re: 사이클 문제그렇게 할 수는 있지만 JMP 공식의 더 나은 기능 중 하나임에도 불구하고 그렇게 해야 할지 100% 확신할 수는 없습니다(JMP 지원팀에서는 이것이 의도하지 않은 동작이라고 말했습니다). 다음은 JMP가 이것이 확실히 필요한 동작임을 인정하기를 바라는 희망 목록 항목입니다 . 각각의 값 설정에서 공식 표현식을 사용하고 Col 통계 공식 지원 동작에서 표현식을 첫 번째 인수로 사용합니다 .
사이클 문제 및 이에 대한 설명을 보려면 JMP 지원팀에 문의하세요. 저는 JMP 개발자가 아니기 때문에 추측(정확할 수도 있고 완전히 틀릴 수도 있음)만 제공할 수 있지만 동시에 여러 값을 시도하므로 어느 정도 이해할 수 있습니다. 이것은 또한 변수에 대해 혼란스럽습니다.