반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?안녕,
반복되는 연속 실험이 있는 데이터 테이블이 있습니다. 그래서 데이터는 이미 쌓여 있습니다. 각 새로운 실험이 1로 시작해서 2로, 마지막 측정까지 계속되는 열이 있습니다. 실험 번호가 있는 새 열을 만들고 싶습니다. 그래서 다른 열이 1로 시작할 때마다 다른 실험이 시작되도록 합니다.
AI의 도움으로 이 스크립트를 작성해 보았지만 작동하지 않습니다. 누군가 이 문제를 도와주셨으면 좋겠습니다.
dt = 현재 데이터 테이블();
// 새로운 실험을 식별하는 데 사용되는 열
experimentIdentifier = Column(dt, "Column1"); // 1에서 100까지 반복되는 숫자가 들어 있는 Column1입니다.
// 샘플 번호에 대한 새 열을 만듭니다.
dt << 새로운 열("샘플번호", 숫자);
// 변수 초기화
현재 실험 = 실험 식별자[1];
샘플번호 = 1;
// 명시적 행 인덱싱을 사용하여 각 행을 반복합니다.
i = 1, i <= N 행(dt), i++,
실험식별자[i] != 현재실험,
// 새로운 실험이 시작되고 샘플 번호가 재설정됩니다.
현재 실험 = 실험 식별자[i];
샘플번호 = 1;
,
// 그렇지 않으면 샘플 번호를 증가시킵니다.
샘플번호++;
);
// 새 열에 샘플 번호 지정
dt:샘플번호[i] = 샘플번호;
);
자동화 및 스크립팅데이터 블렌딩 및 정리Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?새 열을 만들고 이를 수식으로 설정합니다.
Col Cumulative Sum( 1, :Column 1 )
열 1은 측정 숫자가 들어 있는 열입니다.
멍청한 생각.
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?Length( Loc( :Column 1[1 :: Row()], 1 ) )
그 공식은 효과가 있습니다.
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?Col Cumulative Sum()을 사용할 수도 있지만 그다지 보기 좋지 않습니다.
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?스크립트에서 이것을 어떻게 사용하는지 모르겠습니다.
저도 이걸 시도해 봤는데, 지금까지 새 열의 모든 행의 값이 1입니다. 무엇이 작동하지 않는지 알 수 있나요?
dt = 현재 데이터 Table() << New Column("실험 번호",
숫자,
공식(
If( Row() == 1, 1, // 첫 번째 행의 실험 번호를 1로 초기화합니다.
If( :Point No. == 1 & Lag(:Point No.) != 1, Lag(:Experiment No.) + 1, // "Point No."가 1로 재설정되면 실험 번호를 증가시킵니다.
Lag(:Experiment No, 1) // 그렇지 않으면 동일한 실험 번호를 유지합니다.
)
)
)
);
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?안녕하세요 @화이트카우2000 ,
'1'이 나타나는 위치를 잡고 각 위치에 증가하는 숫자를 표시한 다음, JMP에서 수동으로 수행할 수 있는 "채우기 > 누락된 값을 이전 값으로 바꾸기" 옵션을 복사하여 이 문제를 해결해 보았습니다. 측정할 열을 선택할 수 있는 창을 추가하여 더욱 유연하게 작업할 수 있도록 했습니다.
Names Default To Here( 1 );
dt = current data Table ();
dt << Clear Column Selection();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way then it will adapt to that so be careful.
//Window to select the column with repeats
nw = New Window( "Launch Dialog",
<<MODAL></MODAL>
<P>JSL로 정확한 열 이름을 입력하는 스크립트의 간단한 버전은 다음과 같습니다.<BR /><BR /></P>
<CODE class=" language-jsl">Names Default To Here( 1 );
dt = current data Table ();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way
//Window to select the column with repeats
//Add a column to track experiment number
dt<<NEW column=""></NEW>
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?AI는 JSL을 잘 다루지 못합니다. 제 솔루션을 적용하는 건 간단합니다. 그리고 마지막 공식도 시도해 봤는데 잘 작동했습니다.
dt = New Table( New Column( "Point No.", Set Values( Repeat( 1 :: 100, 4 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Length( Loc( :Point No.[1 :: Row()], 1 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Col Cumulative Sum( If( :Point No. == 1, :Point No., 1, 0 ) ) ) );
dt << New Column( "Experiment No",
Numeric,
Formula(
If( Row() == 1,
1, // Initialize experiment number as 1 for the first row
If( :Point No. == 1<SPAN> & Lag(:Point No.) != 1</SPAN>,
Lag( :Experiment No ) + 1, // Increment experiment number if "Point No." resets to 1
Lag( :Experiment No, 1 ) // Otherwise, keep the same experiment number
)
)
)
);

Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?도와주셔서 정말 감사합니다! 이제 If 수식과 Length 수식 모두에서 작동합니다!
Re: 반복되는 연속 데이터가 쌓인 데이터 테이블에 실험 번호가 있는 새 열을 만드는 방법은 무엇입니까?몇 주 후에 이 스레드에 돌아와서 비슷한 문제에 대한 좋은 해결책을 공유하겠습니다. 더 간단한 공식을 사용하면 더 잘 작동할 것 같습니다.
해결됨: 여러 사이클 동안 대용량 데이터 세트에서 사이클을 채우기 위한 새 열을 가져오는 방법... - JMP 사용자 커뮤니티