수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법안녕하세요 - 조건에 따라 가장 최근 행을 찾고 다른 열 값을 검색하거나 두 행 매개변수(DateTime) 간에 계산을 수행하는 수식을 입력하는 데 도움이 필요합니다.
아래 데이터 테이블(또한 첨부됨)에는 Asset, DateTime, Discrete 및 Action 열이 있습니다.
데이터는 먼저 Asset을 기준으로 정렬된 다음 DateTime(오름차순)을 기준으로 정렬됩니다.
테이블 변수 days_threshold = 4도 있습니다.
Action(Desired)은 현재 공식이

수정할 필요가 있습니다.
다음을 얻는 모든 행 이산 = 1(일반적으로 여기에서 건너뛴 수식 규칙에 의해 결정되며 대신 샘플 값이 제공됨), 행동 자신의 이전 행을 찾기 시작해야 합니다(에서 날짜 시간 내림차순 형태). 해당 검색의 두 가지 조건은 다음과 같습니다.
1- 같은 것을 찾고 유산 무엇을 위해 이산 =1(즉, XY01 또는 XY02)
2- 가장 최근 값까지 찾습니다. 조치 = 1 발견된다.
마지막 작업이 1일 때와 현재 행의 DateTime 사이의 일 수를 계산합니다.
차이(일) >= days_threshold = 4 --->인 경우 현재 행의 작업 = 1
차이(일) < days_threshold --->인 경우 현재 행의 작업 = 0
Action이 "1"인 가장 최근 시간을 찾는 데에만 관심이 있습니다. 해당 단일 값이 발견되면(존재하는 경우) 해당 지점에서 검색을 중지할 수 있습니다. 검색 제한은 해당 자산(즉, 가장 오래된 레코드)이 처음 나타날 때까지입니다. 이전에 Action이 "1"로 설정되지 않은 경우 현재 행의 Action을 "1"로 설정할 수 있습니다.
예를 들어, 행 2는 XY01이 Action =1을 얻는 첫 번째 시간입니다(Discrete를 기반으로 하며, 자체적으로 일부 규칙에 연결되어 있으며 이 예에서는 w/값만 표시됨).
다음 행 3에서 불연속형이 다시 1로 설정되지만 이번에는 이전 행과 현재 행 간의 일수 차이가 0(< days_threshold)이므로 Action이 0이어야 합니다.
마찬가지로 행 5의 경우 마지막으로 Action이 1이었던 시점에서 3일만 경과되었으므로 Action은 여전히 0으로 유지됩니다.
마지막으로 Action은 행 6에서 "1"로 설정됩니다.
이 아이디어에 따라 두 개의 자산을 제공했습니다. 원하는 값을 Action(Desired)으로 설정합니다.
나는 이것이 스크립트보다는 공식이 되는 것을 선호합니다.
JMP 팀에 미리 감사드립니다.
알투그 바이람

데이터 혼합 및 정리품질 및 프로세스 엔지니어링Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법자모
이것은 훌륭하게 작동했습니다.또한 ";"로 구분할 때 더 복잡한 논리를 포함하는 수식에 대한 이해를 넓혔습니다.
또한 이 경우 0이 DateTime 매개변수의 시작 재설정으로 작동한다는 점이 흥미롭습니다.
Jarmo/Jim - 이에 대한 매우 빠른 도움에 감사드립니다... 지원해 주셔서 감사합니다.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법또한 수식에서 Lag, Date Difference를 많이 사용합니다. 그러나 이것은 코드로 약간 관련되고 스크립트를 수식에 통합하는 경험이 부족하기 때문에 그 면에서 약간 어려움을 겪습니다. 달력 날짜가 아닌 레코드 수에 의도가 있는 경우 사용 가능한 인덱스 기능으로 인해 쉽게 할 수 있습니다. "일" 요구 사항은 더 어렵게 만듭니다.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법수식 부분은 다음과 같으며 새 열을 만든 후 열 정보에서 수식에 직접 추가할 수 있어야 합니다.
As Constant(
latest_ac = 0;
ret_val = 0;
);
If(:Asset == Lag(:Asset),
If(:Discrete & Date Difference(latest_ac, :DateTime, "day") >= :days_threshold,
latest_ac = :DateTime;
ret_val = 1;
,
ret_val = 0;
);
,
latest_ac = 0;
ret_val = 0;
);
ret_val;
표도 붙였습니다. 공식에 매우 익숙하지 않은 경우 이 문서의 일부를 읽을 수 있습니다. JMP 사용 > JMP에서 수식 만들기
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법안녕하세요, 스크립트가 수식에 어떻게 통합되는지 확인할 수 있도록 버전을 첨부해 주시겠습니까? 수식에 스크립트를 넣는 것은 초보자입니다.
감사해요.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법내 수식은 이미 몇 달이 아닌 일을 사용하고 있었기 때문에 여전히 잘 작동해야 합니다(테스트 테이블에서 변환을 수행했지만 잊어버렸습니다). Action2는 내가 제공한 수식의 결과이며 Action(Desired) 열과 차이가 없습니다.

As Constant, Date Difference 및 Lag에 대한 스크립팅 인덱스를 확인하는 것이 좋습니다. 그들은 공식의 이해에 도움이 될 것입니다
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법수정된 DateTime 형식이 포함된 내 다음 버전은 아래를 참조하십시오(M/D/Y였어야 합니다...)
가능한 경우 이를 수행할 수 있는 공식을 찾고 있습니다. 고마워.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법이 다음 버전에서 DateTime의 형식을 수정했습니다. 당신의 도움을 주셔서 감사합니다.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법"일" 제약 조건은 달력 시간으로 측정합니다. "시간 작업이 1일 때부터 경과한 일 수"가 문제입니다.
D/M/Y로 잘못된 DateTime 열에 형식을 넣었다는 것을 알고 있습니다.
M/D/Y였어야 했는데....
실수에 대해 사과드립니다.
따라서 행 3과 5는 각각 6월 2일과 5일에 있습니다.
이것에 대한 공식을 만드는 것이 가능할까요?
감사합니다 JMP 팀.
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법DateTime 열에 대해 질문이 있습니다.정의한 대로 Asset = "XY01"에 대한 모든 값은 2022년에 대해 여러 달의 6일에 측정되었습니다.
행 3 = 2022년 2월 6일
행 5 = 2022년 5월 6일
89일 후이지만 원하는 조치가 0임을 나타냅니다.
@jthi 응답은 내 자신의 독립적인 계산과 마찬가지로 1의 동작을 보여줍니다.
우리는 무엇을 놓치고 있습니까?
Re: 수식 - 조건에 따라 가장 최근 행을 찾고 다른 열에서 값을 검색하는 방법다음과 같이 작동할 수 있습니다.
dt << New Column("Action", Numeric, Nominal, Formula(
As Constant(
latest_ac = 0;
ret_val = 0;
);
If(:Asset == Lag(:Asset),
If(:Discrete & Date Difference(latest_ac, :DateTime, "day") >= :days_threshold,
latest_ac = :DateTime;
ret_val = 1;
,
ret_val = 0;
);
,
latest_ac = 0;
ret_val = 0;
);
ret_val;
));