누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용Col3에서 Col1의 현재 값과 Col2의 지연된 값을 더하는 수식을 작성하려고 하지만 누락된 데이터가 발생했을 때 Col2에서 마지막 관찰을 전달하는 방법을 알아내려는 피클에 부딪히고 있습니다. 누락되지 않은 데이터의 첫 번째 인스턴스에서 이 값을 사용합니다.그건,
If( !IsMissing( Col1)
Col1 + Lag(Col2,1);
//create variable that contains current Col2 value;
//Else
Col1 + previously stored value from Col2;
);
이 작업을 수행하는 가장 좋은 방법에 대한 제안에 감사드립니다.감사해요.
| 열# |
열1 |
열2 |
콜3 |
|---|
| 1 |
2 |
1 |
|
| 2 |
1 |
삼 |
2 |
| 삼 |
1 |
5 |
4 |
| 4 |
2 |
7 |
7 |
| 5 |
. |
. |
|
| 6 |
. |
. |
|
| 7 |
. |
. |
|
| 8 |
2 |
8 |
9 |
| 9 |
2 |
9 |
10 |
| 10 |
1 |
11 |
10 |
| 11 |
. |
. |
|
| 13 |
. |
. |
|
| 14 |
2 |
12 |
13 |
| 15 |
2 |
13 |
14 |
| 16 |
1 |
14 |
14 |
| 17 |
2 |
15 |
16 |
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용훌륭한 설명과 ID 통합에 대한 다음 질문을 기대해 주신 Jerry에게 감사드립니다!
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용이전 답변에서 더 자세한 설명을 제공하지 못한 점 죄송합니다. 먼저 데이터 테이블에서 수식이 작동하도록 하려면 "If" 문의 "Date" 열을 "Biopsy Result"로 변경하고 Date Difference 함수의 "Hour" 인수를 필요한 간격(예: "Day")으로 변경합니다. 
If( Row() == 1,
nm = Loc Nonmissing( :Biopsy Result << get values );
.;
,
If( Is Missing( :Biopsy Result ),
.,
Try( Date Difference( :Date[nm[Contains( nm, Row() ) - 1]], :Date, "Day" ) )
)
)
이제 설명을 위해. 기존 수식은 누락되지 않은 데이터를 찾을 때까지 자동으로 앞뒤로 인덱싱하지 않으므로 스크립팅을 사용하여 필요한 정보가 포함된 변수를 만들었습니다. 스크립팅에 대해 자세히 알아보려면 도움말->서적->스크립팅 안내서 및 도움말->스크립팅 색인을 참조하십시오.
":Biopsy Result<
다음으로 생검 결과가 누락된 경우 결과가 누락으로 설정됩니다. 그렇지 않으면 날짜 차이 계산을 위해 누락되지 않은 이전 날짜를 참조해야 합니다. Contains(nm, Row())는 "nm" 행렬에서 현재 행의 위치를 찾습니다. "nm" 행렬에서 이전 행의 위치를 찾으려면 여기에서 1을 뺍니다. 이것은 이제 누락되지 않은 이전 생검 결과가 있는 행의 날짜 값에 대한 색인, 즉 행 번호입니다. 누락되지 않은 이전 행(즉, 생검 결과의 첫 번째 인스턴스)이 없을 때 "시도" 기능은 날짜 차이 기능에서 생성된 오류를 무시합니다.
명심해야 할 몇 가지 사항은 데이터가 ID # 내에서 날짜순으로 정렬되어 있다고 가정합니다(귀하의 예에서와 같이). 또한 데이터 테이블에 여러 ID 번호가 있는 경우 두 개의 다른 ID를 비교하지 않도록 다른 조건을 추가할 수 있습니다. 이 경우 수식/스크립트는 다음과 같을 수 있습니다.
If( Row() == 1,
nm = Loc Nonmissing( :Biopsy Result << get values );
.;
,
If( Is Missing( :Biopsy Result ),
.,
If( :ID # == :ID #[nm[Contains( nm, Row() ) - 1]],
Try( Date Difference( :Date[nm[Contains( nm, Row() ) - 1]], :Date, "Day" ) ),
.
)
)
)
나는 이것이 많은 정보라는 것을 알고 있지만 당신은 "이것을 배우는 것이 불안하다"고 말했습니다... 이것이 도움이 되기를 바랍니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용당신은 찾을 수 있습니다 데이터 테이블 도구 이러한 경우에 유용한 추가 기능입니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용고마워요 제리. 이것은 내가 필요한 것과 정확히 같습니다.
불행히도 나는 이것에 대한 초보자이며 내 데이터베이스와 수식 편집기에서 이것을 직접 다시 만들 수 있는 방법을 알아내는 데 여전히 도움이 필요합니다. 내 데이터의 단일 환자에 대한 관심 있는 열의 매우 단순화된 버전을 첨부했습니다.
내 데이터베이스에는 우리가 따르고 있는 실험실 값이 있는 많은 데이터 행이 있지만 일부 행에만 생검 결과가 있습니다. 생검이 발생할 때마다 "날짜" 열의 날짜를 사용하여 생검 사이의 날짜 차이를 계산하는 수식을 만들고 싶습니다.
안타깝게도 수식을 만드는 데 사용한 함수를 이해할 수 없습니다.... 예를 들어... "Is missing" 기능을 여러 번 사용한 경우에도 "Loc Nonmissing" 옵션이 표시되지 않습니다. 수식 편집기.
또한 "nm"은 무엇을 의미합니까 .... 나는 "무언가 행렬"을 가정하지만 수식 편집기에서 어디에서 찾을 수 있습니까?
번거롭게 해서 죄송하지만 제가 필요한 것과 정확히 같기 때문에 이것을 배우고 싶습니다.
다시 한 번 감사드립니다.
CW
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용안타깝게도 귀하가 제공한 예제 표를 볼 수 없지만 동봉된 파일을 통해 현재 날짜와 누락되지 않은 이전 날짜 간의 차이를 파악하는 방법에 대한 아이디어를 얻을 수 있습니다.
두 번째 열의 수식은 먼저 날짜 열의 누락되지 않은 셀에 대한 행 행렬을 설정합니다. 이렇게 하면 날짜 차이 함수에서 인덱스로 사용되는 누락되지 않은 이전 행을 참조할 수 있습니다.
이 작업에 대한 다른 아이디어가 있다고 확신합니다 ...
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용내가 하려고 하는 것은 질문을 하는 것입니다....내 데이터베이스에서 주어진 환자(첫 번째 열의 pt 번호)에 대한 두 개의 다른 생검(TCMR로 표시된 열) 간의 날짜 차이는 무엇입니까? 생검은 불규칙한 간격으로 이루어지며 생검 결과는 아래 세 번째 열에 나와 있습니다.
생검 결과가 포함된 행의 하위 집합만 만든 다음 날짜 차이를 요청하면 이 정보를 검색하는 방법을 알고 있지만....날짜 차이를 확인하는 방법을 찾고 싶습니다. 비어 있는 행을 무시하면서 생검 결과가 있는 임의의 행 사이.
@jerry_cooper 쓴 :
나는 이 공식이 당신이 추구하는 것을 줄 것이라고 생각합니다.
If(Is Missing(:Column 1), :Column 1, Summation(i = 1, Row(), :Column 1))
도움이 되었기를 바랍니다.
-실내 변기
당신이 이것을 도울 수 있습니까? 수식 편집기에서 보거나 붙여넣을 수 있는 솔루션을 사용하는 것이 이상적입니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용이 응답은 Col Cumulative Sum() 함수를 도입한 JMP 13 출시 이전에 작성되었다고 생각합니다. v13 이상을 사용하는 경우 누적 합계 열을 만들기 위해 해야 할 일은 합계를 구하려는 열의 열 머리글을 마우스 오른쪽 버튼으로 클릭하고 새 수식 열=>행=>누적 합계를 선택하는 것뿐입니다. 그러면 적절한 수식으로 새 열이 생성됩니다. 편집기에서 수식을 보려면 새 열을 마우스 오른쪽 단추로 클릭하고 수식을 선택합니다.
이전 버전을 사용하는 경우 다음 문을 복사하여 수식 편집기에 붙여넣어 모양을 확인합니다.
Summation(i=1, Row(), Your Column[i])
도움이 되었기를 바랍니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용이것이 바로 나에게도 필요한 것이라고 생각하지만 스크립트를 완전히 이해하지 못합니다.... 수식 편집기에서 이것이 어떻게 보이는지 보여줄 수 있습니까...
정말 고마워
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용나는 항상 이 문제에 부딪히고 Jerry가 제공하는 솔루션을 사용합니다. 압축 데이터 히스토리안에서 검색한 프로세스 측정(온도, 압력, 유량 등)을 분석합니다. 수천 포인트마다 누락된 값이 있을 수 있습니다.
아래 예는 촉매 흐름의 3점 이동 평균, F.Cat >= 11(익명화된 예, 참조를 얻음...)을 기준으로 반응기가 실행 중인지 여부를 계산합니다. F.Cat이 없으면 calc는 이전 행의 "실행 중?" 값을 사용합니다.
If(
Row() < 3, 0,
Is Missing( :F.Cat ), Lag( :Name( "Running?" ), 1 ),
(Lag( :F.Cat, 2 ) + Lag( :F.Cat, 1 ) + :F.Cat) / 3 >= 11, 1,
0
)
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />귀하의 의견과 도움에 감사드립니다.
제 생각에는 Jerry의 제안이 저에게 가장 잘 맞았고 제가 사용하고 싶었던 지역 변수를 사용할 필요가 없었습니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용나는 이 공식이 당신이 추구하는 것을 줄 것이라고 생각합니다.
If( Is Missing( :Column 1 ),
:Column 1,
Summation( i = 1, Row(), :Column 1 )
)
도움이 되었기를 바랍니다.
-실내 변기
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용우리는 항상 수식 열을 자체 참조할 수 있었습니까?나는 내가 이것을 할 수 있다는 것을 결코 깨닫지 못했습니다.
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용Jim과 Jeff에게 감사합니다.
내 설명과 표 레이아웃에 필요한 것보다 문제를 더 복잡하게 만들었고 이것이 귀하의 제안으로 이어진 방법을 볼 수 있습니다.
누락되지 않은 데이터를 포함하는 새 열을 만드는 것에 대한 Jeff의 제안을 이해하지만 다양한 열에 대해 이 수식을 사용할 것이기 때문에 새 열을 만들지 않고 작업을 수행할 수 있기를 바랍니다.아래 표를 통해 내가 달성하려는 목표에 대해 좀 더 명확하게 설명하겠습니다.
열 2에 열 1의 누적 합계를 만들려고 합니다. 추가 열을 만들지 않고 열 2의 현재 누적 합계 값을 포함하는 변수를 만들고 열 1의 값에 추가하려고 했습니다.
내 문제는 열 2의 현재 값을 포함하는 변수를 만들고 사용하여 이 값이 누락된 열 1 데이터의 행 간에 "이동"할 수 있는 가장 좋은 방법을 알지 못하는 것입니다."찾고 있는 결과" 열에는 2열의 수식에서 생성하려는 내용이 표시됩니다.바라건대 이 설명이 내가 성취하고자 하는 것에 대해 좀 더 명확해졌으면 합니다.

Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용귀하의 설명에 오류가 있어 정확한 솔루션을 제공하기 전에 정리해야 할 것 같습니다. 귀하의 조건은 Col1이 누락되지 않은 경우 Col2의 지연된 값에 추가하고 Col1이 누락된 경우 이전에 저장된 Col2 값에 추가한다고 말합니다.
누락된 Col1을 아무 것도 추가할 수 없으며 누락된 것 이외의 다른 항목을 가져올 수 없습니다.
그렇게 말하면서 나는 이 테이블을 한 번에 하나의 열로 만들 것입니다. 구체적으로 다음 수식을 사용하여 누락된 값이 없는 "비누락 Col2" 열을 생성합니다.

이 수식은 Col2가 누락되지 않은 경우 "non-missing Col2"를 Col2로 설정하고 Col2가 누락된 경우 "non-missing Col2"의 Lag로 설정합니다.

그런 다음 최종 수식에서 Lag(non-missing Col2, 1)를 사용할 수 있습니다.
도움이 되길 바랍니다.
-제프
Re: 누락되지 않은 경우 이전 값을 사용하는 공식, 그렇지 않으면 마지막으로 점유한 셀의 값 사용작동하는 공식의 한 버전은 다음과 같습니다.
If( Row() == 1, lagval = . );
x = Sum( :col 1, lagval );
If( Is Missing( col 2 ) == 0,
lagval = :col 2
);
x;