데이터 테이블을 반복하는 가장 빠른 방법안녕하세요,
수백만 개의 행(이미지 데이터)이 있는 JMP 테이블이 있는데, 각 연산은 비용과 시간이 많이 소요됩니다. 하지만 다른 열에서 계산될 새 열을 추가해야 합니다.
대용량 데이터 세트에서 이 작업을 수행하는 가장 빠른 방법은 무엇인가요? 현재 열에 Set Formula를 사용하고 있는데, 적용하는 데 시간이 오래 걸리고, 게다가 분석 중에 수식이 여러 번 변경될 가능성이 높습니다. '값 가져오기' 벡터 같은 것을 사용해야 할까요? '각 행에 대해' 함수도 봤습니다. 피드백이나 유용한 팁이 있으면 알려주시면 감사하겠습니다.자동화 및 스크립팅기본 데이터 분석 및 모델링Re: 데이터 테이블을 반복하는 가장 빠른 방법많은 경우, 기존의 행 단위 JSL 대신 행렬 연산을 사용하면 처리 속도가 빨라집니다. 하지만 사용 중인 실제 수식의 예를 제공해 주시면 감사하겠습니다.
Re: 데이터 테이블을 반복하는 가장 빠른 방법안녕하세요,
답변해 주셔서 감사합니다.
맥락을 더 추가하자면, 아래는 제가 사용하는 공식의 예시가 담긴 스크립트입니다. 이미지의 X/Y 좌표를 기준으로 실제 날짜를 기준으로 총 20개의 구역으로 나눕니다. 구역 분류가 정확하지 않으면 공식을 수정합니다. 그래서 저는 정해진 공식을 자주 사용한다고 말씀드립니다.
dt = New Table( "Reprex",
Add Rows( 1000000 ),
New Column( "X", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) ),
New Column( "Y", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) )
);
R_debut_X = 10;
largeur = 50;
ecart_X = 5;
debut_Y = 20;
hauteur = 30;
ecart_Y = 5;
// Slow way: row formula
dt << New Column( "Zone_slow", Character,
Formula(
If( R_debut_X < :X <= R_debut_X + largeur & debut_Y < :Y <= debut_Y + hauteur, "Zone 1",
R_debut_X + largeur + ecart_X < :X <= R_debut_X + 2*largeur + ecart_X & debut_Y < :Y <= debut_Y + hauteur, "Zone 2",
"Other"
)
)
);
Re: 데이터 테이블을 반복하는 가장 빠른 방법@txnelson 님 , 맞습니다. 행렬을 사용하면 속도가 향상될 수 있습니다. < 를 사용하고 있는지 확인하세요.
dt = New Table( "Reprex",
Add Rows( 1000000 ),
New Column( "X", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) ),
New Column( "Y", Numeric, Continuous, Formula( Random Integer( 0, 200 ) ) )
);
R_debut_X = 10;
largeur = 50;
ecart_X = 5;
debut_Y = 20;
hauteur = 30;
ecart_Y = 5;
start = hptime();
// Slow way: row formula
dt << New Column( "Zone_slow", Character,
Formula(
If( R_debut_X < :X <= R_debut_X + largeur & debut_Y < :Y <= debut_Y + hauteur, "Zone 1",
R_debut_X + largeur + ecart_X < :X <= R_debut_X + 2*largeur + ecart_X & debut_Y < :Y <= debut_Y + hauteur, "Zone 2",
"Other"
)
)
);
dt<
<RUNFORMULAS></RUNFORMULAS>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="Craige_Hales_0-1758807317326.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/83489iE50BBC18E746B0D5/Craige_Hales_0-1758807317326.png" role="button" title="Craige_Hales_0-1758807317326.png" alt="Craige_Hales_0-1758807317326.png" /></span></SPAN></SPAN></P> <BR /> <P>결과 값은 cmatxy1, 2의 0 또는 1 진리값을 사용하여 other, zone1, zone2의 0, 1 또는 2 값을 생성합니다. 만약 더 빠른 결과를 원한다면 행렬 명령문 중 일부를 축소하여 속도를 높일 수 있습니다.</P> <BR />
Re: 데이터 테이블을 반복하는 가장 빠른 방법정말 감사합니다. 이제 훨씬 빨라졌어요!