연속 조건의 수를 직접 계산하는 방법은 무엇입니까?예를 들어 "높이"를 예로 들어 이전 행의 "높이"보다 큰 행의 "높이"의 연속 개수를 계산합니다.
행의 "높이"가 이전 행의 "높이"보다 큰지 여부를 결정하기 위해 보조 열 h를 추가한 다음 이전 행의 "높이"보다 큰 행의 연속적인 "높이"를 세었습니다. 다른 열. "높이"가 이전 행의 "높이"보다 작으면 다시 계산해야 합니다.

이 계산을 한 번에 어떻게 할 수 있습니까?
나는 이것을 시도했지만 작동하지 않았습니다.
if(:height>Lag(:height,1),row()-Contains(:height[Index(1,Row())],:height<LAG></LAG>
- 감사해요!
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕하세요 여러분,
시간이 좀 걸렸지 만 결국 조건이 참이면 이전 행에 값을 추가하는 방법을 알아 냈습니다.
그래서 이것을 여러분과 공유하고 싶습니다.그룹 내에서 순차적 값에 태그를 지정하는 데 이것을 사용하고 있습니다.
다들 감사 해요.
건배!
If( 행() == 1,
.,
If( :master == Lag( :master ),
If( :roll - Lag( :roll ) == 1,
:서열 롤 v3[Row() - 1] = 1,
.
)
)
)
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕 존,
오류가 표시되지만 필요한 계산 및 확인을 제공하지 않습니다.내 마지막 게시물은 가까운 새로운 데이터 테이블과 수식을 보여줍니다.
감사합니다
온자이
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?두 번째 If에는 동등성 테스트를 위한 == 대신 할당을 위한 단일 =가 있는 것처럼 보입니다.
If( Row() == 1,
hCounter = 0,
If(
Lag( :name ) == :name,
If( :age > Lag( :age, 1 ),
Empty()
),
hCounter++, hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕,
실제 데이터 세트의 일부를 첨부하고 있습니다.나는 :master에 의해 순차적인 :rolls의 수를 추적하고 있습니다.공식은 비슷하지만 차이가 1인 경우 순차 롤의 첫 번째 발생 값을 설정하기 위해 여전히 필요합니다.
If( :master == Lag( :master ),
If( Dif( :롤, 1 ) == 1,
Dif( :롤, 1 ),
.
),
.
)
예를 들어 차이 = 1이므로 행 8과 11에 대해 :sequential roll 값을 1로 설정해야 합니다.

도움을 주시면 감사하겠습니다.
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕 짐,
괜찮아요.수식의 최종 결과로 내가 찾고 있는 것을 표시하기 위해 열 이름을 지정했습니다.
Carol의 "desired by:name" 열을 살펴봅니다.
신장 측정은 연속 3년(14, 15, 16세) 동안 수행되었습니다.그러나 공식은 4를 보여줍니다.
연령의 차이는 행마다 1이어야 합니다. <>1인 경우 비어 있어야 합니다.
값이 <>1이 될 때까지 Lag가 1씩 증가해야 합니다. 신장 측정 연도를 놓친 경우 신호를 보내야 합니다.

Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?"desired by :name" 열에 대한 규칙을 이해할 수 없습니다.Alice에 대한 행 끝에 하나의 결측값이 있지만 Carol과 Chris에 대한 결측값이 있는 2개의 행, 그리고 Clay에 대한 결측값의 단 1행으로 돌아갑니다.난 이해가 안 돼요
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕,
오류를 찾았지만 수식은 여전히 원하는 대로 열 10을 계산하지 않습니다.
앨리스의 키는 5년 연속으로 측정되었습니다.어떤 행이 연속적인지 표시하려면 열이 필요합니다.클레이는 2년 연속으로 키를 측정했습니다.Carol은 3년 연속 신장 측정을 받았지만 10열에는 4가 나와 있습니다.

열 10의 공식:
If( Row() == 1,
hCounter = 0,
If( Lag( :name ) == :name,
If( :age > Lag( :age, 1 ),
hCounter
++),
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕 ,
내가 뭘 잘못하고 있는지 잘 모르겠지만 If 문에서 이 오류를 범하고 있습니다.

이를 위해:
If( Row() == 1,
hCounter = 0,
If(
Lag( :name ) = :name,
If( :age > Lag( :age, 1 ),
Empty()
),
hCounter++, hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?Lag(:Name) != :Name인지 확인하는 수식에 IF() 문을 추가하고 그렇지 않은 경우 카운터를 다시 시작점으로 설정합니다.
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?안녕,
비슷한 도전이 있습니다.그러나 열에서 순차적(1씩 증가) 값의 수를 계산해야 합니다.설명을 위해 BigClass 예제를 첨부합니다.

귀하의 수식을 사용하여 :age를 기준으로 열 :h를 계산했지만 시퀀스의 첫 번째 값에서 시작하고 :name으로 그룹화되는 수식이 필요합니다.
공식으로 달성할 수 있습니까?
문안 인사,
온자이
Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?여기서 루핑은 좋은 생각입니다!
고마워요!Re: 연속 조건의 수를 직접 계산하는 방법은 무엇입니까?이 문제에는 상당히 간단한 해결책이 있습니다.
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
이 버전은 2열 솔루션과 마찬가지로 조건을 충족하는 시차가 0이면 누락된 값을 생성합니다.결과 값이 누락된 값이 아닌 0이 되도록 하려면 다음을 사용하십시오.
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
hCounter;
다음은 두 가지 방법을 완전히 비교한 것입니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "h",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Row() == 1, 0, :height > Lag( :height, 1 ) ) )
);
dt << New Column( "Two Columns Used",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :h == 1, Row() - Contains( :h[Index( 1, Row() )], 0, -1 ) ) )
);
dt << New Column( "All in one",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1,
hCounter = 0,
If( :height > Lag( :height, 1 ),
hCounter++,
hCounter = 0
)
);
If( hCounter == 0,
.,
hCounter
);
)
);