각 행의 값 계산목록에 열 1-6이 있는 스크립트가 있습니다.
POR이라는 단어가 나타나는 횟수와 test라는 단어가 나타나는 횟수를 계산하는 JSL 스크립트를 작성하려고 합니다.
아래 예(마지막 2개 열을 수동으로 수행했나요?)

포럼을 읽으면서 DT를 매트릭스로 변환해야 한다는 것을 알고 있지만 이를 작동시킬 수는 없습니다.
감사해요!
자동화 및 스크립팅Re: 각 행의 값 계산알고는 있지만... 시간적인 측면에서 보면 의외로 좋은 방법이다. 흥미롭게도 concat 방법은 이상하지만 정말 빠릅니다.
예를 들어 이러한 값이 200,000행 x 10열로 구성된 테이블(압축 파일 첨부)의 경우 런타임은 다음과 같습니다.

Names Default To Here( 1 );
dt = Current Data Table();
t1 = HP Time();
dt << new column("xx",
formula(sum( design (dt[row(), {:col1, :col2, :col3, :col4, :col5, :col6, :col7, :col8, :col9, :col10}], {"test"})))
);
t2 = hptime();
dt << New Column( "xx",
formula(
count = 0;
dt = :Col1 << get data table;
For( i = 1, i <= 10, i++,
If( Column( dt, i )[Row()] == "test", count ++)
);
count;
)
);
t3 = hptime();
dt << new column("xx", formula(nrow(loc(dt[row(), {:col1, :col2, :col3, :col4, :col5, :col6, :col7, :col8, :col9, :col10}], "test"))));
t4 = hptime();
dt << new column("concat", character, formula(Col1 || :Col2 || :Col3 || :Col4 || :Col5 || :Col6 || :Col7 || :Col8 || :Col9 ||:Col10));
dt << new column("xx", formula(length(:concat)-30));
t5 = hptime();
print(evalinsert("Design matrix method: ^(t2-t1)/1e6^ seconds."));
print(evalinsert("Looping method: ^(t3-t2)/1e6^ seconds."));
print(evalinsert("Nrow(Loc()) method: ^(t4-t3)/1e6^ seconds."));
print(evalinsert("Concat method: ^(t5-t4)/1e6^ seconds."));
Re: 각 행의 값 계산아주 멋지네요....하지만 내 생각엔 당신이 큰 심연에 조금 들어간 것 같아요Re: 각 행의 값 계산난 이게 맘에 들어요, 크레이지.
디자인 매트릭스 기능이 이 아이디어를 처리할 수 있는 것 같습니다. "a"의 수를 계산하려면 이 공식을 사용해 보세요.
dt = :Col1 << get data table;
Sum( Design( dt[Row(), {:Col1, :Col2, :Col3, :Col4, :Col5}], {"a"} ) );
Re: 각 행의 값 계산또 다른 방법.
Column formula to count across rowColumn formula to count across row행 전체에 걸쳐 계산할 열 수식
이 수식은 데이터 테이블 첨자를 사용하여 행 8에 대해 {"test","POR","test","test"}와 같은 목록을 가져옵니다.
위에서는 1::4를 사용했는데, 이는 바로 가기로 Index(1,4)로 변환됩니다. {Column1, Column 2, ...을 사용해야 합니다. 대신 열 N}은 값 중 하나를 "xyzzy"로 변경했을 때 수식을 강제로 다시 실행할 때까지 수식 열의 값이 업데이트되지 않았기 때문입니다. JMP는 열이 다른 열을 참조하는지 알 수 없으면 재평가하지 않습니다.
이것이 더 잘 작동합니다:
formula with explicit column namesformula with explicit column names명시적인 열 이름이 있는 수식
Re: 각 행의 값 계산안녕,
JMP의 "값 레이블" 속성과 "레이블을 코드로" 및 "코드를 레이블로" 열 유틸리티를 확인해 보세요.
POR에 숫자 1을 사용하고 테스트에 0(원하는 경우 1: 테스트 및 0: POR)을 사용하는 것을 옹호하지 않았다면 나는 태만할 것입니다. 값 레이블 열 속성을 사용하면 이러한 값이 "테스트" 및 "POR"인 것처럼 표시되도록 할 수 있지만 내부적으로는 0과 1입니다.
값이 숫자이므로 기본 열 및 행 수식을 사용하여 계산을 수행할 수 있습니다. 1과 0의 경우 합은 1의 수를 나타내고 평균은 1의 비율을 나타냅니다. 이 예에서 POR을 0으로, "test"를 1로 저장하면 관심 있는 모든 열을 선택하고 마우스 오른쪽 버튼을 클릭한 후 새 수식 열 > 결합 > 합계 팝업 메뉴에서
아래는 이것이 실제로 어떻게 보이는지 보여주는 이미지입니다. POR 및 test라는 단어가 왼쪽 정렬되어 있으므로 셀에 텍스트가 포함된 것처럼 보이지만 셀을 클릭하면 실제로 날짜 및 시간에 수행되는 것과 유사하게 JMP가 내부에 숫자를 저장하고 있음을 알 수 있습니다.

열 창(데이터 테이블의 왼쪽 중앙)에서 열 이름 오른쪽에 있는 *를 클릭하면 "값 레이블"을 선택하여 속성의 현재 설정을 볼 수 있습니다.

건배,
브래디
Re: 각 행의 값 계산멋진 아이디어
Re: 각 행의 값 계산안녕,
또 다른 방법은 원클릭 변환으로 모든 열을 연결하는 것입니다.
"test"는 POR보다 1문자 더 많고 누락된 데이터가 없기 때문에 결과 문자열은 "POR"만 있는 문자열과 비교하여 포함된 모든 "test"에 대해 1문자씩 증가합니다.
연결하려면 관심 있는 컬럼을 선택하고 마우스 오른쪽 버튼을 클릭하여 아래와 같이 선택합니다. 그런 다음 간결성을 위해 열 이름을 "concat"으로 바꿉니다.

아래 예제 테이블에는 관심 있는 열이 6개 있습니다. 따라서 "POR"만 있는 문자열은 6 * 3 = 18자를 갖게 됩니다.
따라서 우리는 다음 공식을 사용합니다.
length(:concat) - "test" 수 == n_test의 경우 18입니다.
그리고
6 - "POR" 수에 대한 n_test.
일반적으로 n_test의 경우 (length(:concat) - 18)/k를 사용합니다. 여기서 k는 두 구문 사이의 문자 차이입니다. 여기서는 k == 1이므로 생략합니다.

건배,
브래디
Re: 각 행의 값 계산귀하가 제공한 대로 JMP에서 테이블을 만들었습니다.

그런 다음 새 열을 만들고 해당 열에 다음 수식을 적용했습니다.
count = 0;
For( i = 1, i <= 4, i++,
count = Sum( count, Contains( As Column( i ), "test" ) )
);
count;
For() 루프는 테이블에 처리할 열이 4개만 있으므로 최대 4개까지만 가능합니다.
다음과 같은 결과를 제공합니다

데이터 테이블을 첨부했습니다
시간을 내어 도움말 풀다운 메뉴에 있는 JMP 발견 문서를 읽어 보시기 바랍니다.
Re: 각 행의 값 계산모두에 대해 행당입니다.
각 행은 해당 행 내부에 값이 몇 번이나 나타나는지 계산한 다음 해당 행의 끝에 "count" 값을 씁니다.
아래 예를 참조하세요. 테이블을 추가했습니다.Re: 각 행의 값 계산야 이거 안 되네
예를 들어 내가 이것을 실행한다면
| 포 | 포 | 포 | 포 |
| 포 | 포 | 포 | 포 |
| 시험 | 포 | 포 | 시험 |
| 시험 | 포 | 포 | 시험 |
| 포 | 포 | 포 | 포 |
| 포 | 포 | 포 | 포 |
| 시험 | 포 | 포 | 시험 |
| 시험 | 포 | 시험 | 시험 |
개수가 0으로 나오네요
"테스트"를 실행할 때 예상되는 것은 다음과 같습니다: 0,2,2,0,0,2,3
그래서 출력은 다음과 같습니다:
| 포 | 포 | 포 | 포 | 0 |
| 포 | 포 | 포 | 포 | 0 |
| 시험 | 포 | 포 | 시험 | 2 |
| 시험 | 포 | 포 | 시험 | 2 |
| 포 | 포 | 포 | 포 | 0 |
| 포 | 포 | 포 | 포 | 0 |
| 시험 | 포 | 포 | 시험 | 2 |
| 시험 | 포 | 시험 | 시험 | 삼 |
Re: 각 행의 값 계산카운트를 계산하는 한 가지 방법인 공식은 다음과 같습니다.
count = 0;
For( i = 1, i <= 6, i++,
count = Sum( count, Contains( As Column( i ), "test" ) )
);
count;
count = 0;
For( i = 1, i <= 6, i++,
count = Sum( count, Contains( As Column( i ), "POR" ) )
);
count;
Re: 각 행의 값 계산작은 질문입니다. 열별로 필요합니까, 아니면 전체적으로 필요합니까?