JSL- 합계 : 동일한 문자열이있는 행별로 정렬 된 qty : 도시<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕 모두,
저는 스크립팅을 처음 접했고 JSL에 관한 정보 튜토리얼을 찾으려고 할 때 완전히 손해를 보았습니다. 나는 정말로 내 문제로 어떤 도움을 주셔서 감사하겠습니다.
기본적으로 도시별로 정렬하고 각 항목의 : Qty 값을 합한 다음 표시해야합니다. 문제는 City에있는 모든 다른 문자열의 목록을 동적으로 집어 넣어야한다는 것입니다. 도시 열에서 일치하는 문자열을 가진 행에 대해 Qty에 모든 숫자 값을 합산합니다.
예를 들어 테이블은 다음과 같습니다.
tableEx =
| 시티 | 수량 |
|---|
| a1 | 100 |
| 대답 2 | 10 |
| a9 | 29 |
| a1 | 99 |
| a4 | 20 |
| 대답 7 | 91 |
| 대답 2 | 60 |
| a100 | 33 |
| a500 | 30 |
| a100 | 14 |
| a99 | 2000 년 |
| 기타... | 기타... |
이 다음 부분은 내 문제를 해결하기 위해 읽을 필요가 없으며 단지 내 마음 속의 문제를 어떻게 해결할 것인지 자세히 설명합니다. 이런 식으로 할 수 있으면 좋겠다.
List_Of_CityNames = 새 목록 ();
스위치 = 거짓;
테이블 Ex의 Foreach Row r
{
List_Of_CityNames의 Foreach String 도시
{
if (r.Get (City) == 도시)
switch = true; //이 행의 의미 : City 항목이 이미 목록에 있으므로 추가 할 필요가 없습니다.
}
if (switch == false) //이 행의 City가 목록에 아직 입력되지 않은 경우 this가 실행됩니다.
{
List_Of_CityNames.Add (r.Get (City)); // 목록에 추가 된 도시
}
스위치 = 거짓; // 목록에 City가 아직 설정되지 않았습니다.
}
이게 작동한다면 목록을 튜플에서 만들었고 문자열 + int 쌍으로 만들어서 위의 루프에서 일치하는 도시의 수량을 합계 할 수있게했습니다. 그런 다음, 가능한 경우 새 표 ()를 작성하여 인쇄합니다.
위의 정보를 수집 한 후에 나는 그것을 인쇄해야합니다. 누군가가 목록의 동적 크기를 기반으로 테이블을 작성하는 방법을 알게 되었습니까? 아니면 첫 번째 해결책의 일부가 아닐 수도 있습니다.
dtSolution = 새 테이블 ( "솔루션",
행 추가 (/ * 다른 도시 이름의 수를 나타내는 숫자 값 * /),
새 열 ( "/ * 목록의 첫 번째 도시 * /", "연속", 집합 값 (목록 (/ * 같은 수의 합계를 나타내는 변수 / 수량 * /)))),
새 열 ( "/ * 목록의 두 번째 도시 / /", "연속", 집합 값 (목록 (/ * 같은 수의 합계를 나타내는 변수 / 수량 * /)))),
새 열 ( "/ * 목록의 세 번째 도시 * /", "연속", 집합 값 (목록 (/ * 동일한 수 * /)에 대한 합계 : 수량을 나타내는 / * 변수)
새 열 ( "/ * 목록의 네 번째 도시 * /", "연속", 집합 값 (목록 (/ * 같은 수의 합계를 나타내는 변수 / 수량 * /)))),
새 열 ( "/ * 목록의 다섯 번째 도시 / /", "연속", 집합 값 (목록 (/ * 동일한 수 * /)에 대한 합계 : 수량을 나타내는 / * 변수)
새 열 ( "/ * 목록의 여섯 번째 도시 / /", "연속", 집합 값 (목록 (/ * 같은 수의 합계를 나타내는 변수 / 수량 * /)))),
등 모든 도시가 테이블에 추가 될 때까지 // 새 테이블을 만든 후 아마 각 행을 하나씩 테이블에 pt.1에 작성된 목록을 기반으로 추가하기 위해 foreach 루프를 사용해야 할 것입니다
);
내가 얻을 수있는 도움에 정말 감사드립니다. 당신이 그 모든 것을 끝까지 읽었다면 고맙습니다.
고맙습니다,
루이 시우스
재 : JSL- 합계 : 동일한 문자열을 가진 행별로 정렬 된 qty : 도시Loysius,
나는 Tabulate가 JMP 10의 Tables 메뉴에 나타난다는 것을 언급해야한다. JMP 11부터 분석 메뉴로 이동했습니다.
-남자 이름
재 : JSL- 합계 : 동일한 문자열을 가진 행별로 정렬 된 qty : 도시도표 창에있는 작은 빨간색 삼각형을 사용하여 표를 데이터 표로 저장할 수 있습니다.
Michael의 솔루션을 사용하여 원하는 표를 만든 후 빨간색 삼각형을 클릭하고 "데이터 표 만들기"를 선택하십시오. 이것은 본질적으로 내가 JSL에서 한 일을 모방한다.
재 : JSL- 합계 : 동일한 문자열을 가진 행별로 정렬 된 qty : 도시Michael과 PMroz에게 감사드립니다!
나는 Tables 메뉴 아래에서 Tabulate를 찾았지만 귀하의 피드백에 대해 감사드립니다. 테이블의 JSL 버전을 클립 보드에 복사하여 스크립트에 붙여 넣을 수 있다는 것을 알지 못했습니다.
안타깝게도 그들은 직접 사용할 수있는 붙여 넣기를 복사하지 않으며 작업하기 전에 수정해야합니다. 이 경우 PMroz의 솔루션은 모든 것이 올바르게 작동하는 구문을 보여줍니다.
진정으로,
루이 시우스
재 : JSL- 합계 : 동일한 문자열을 가진 행별로 정렬 된 qty : 도시여기는 JSL 프로그램입니다 :
// 예제 테이블 만들기
dt = 새 테이블 ( "CityQty" , 행 추가 ( 11 ) ,
새 열 ( "시티" , 캐릭터 , 명사 같은 ,
값 설정 ( { "a1" , "a2" , "a9" , "a1" , "a4" , "a7" , "a2" , "a100" , "a500" , "a100" , "a99" } ) ) ,
새 열 ( "수량" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 ( [ 100 , 10 , 29 , 99 , 20 , 91 , 60 , 33 , 30 , 14 , 2000 년 ] ) )
) ;
// 보이지 않는 표를 만든다.
dtab = dt << 표로 만들다 (
제어판 표시 ( 0 ) ,
표 추가 (
열 표 ( 분석 열 ( : 수량 ) ) ,
행 표 ( 그룹화 컬럼 ( : 시티 ) )
) , 보이지 않는 ,
) ;
// 표를 표로 변환
dt_new = dtab << 데이터 테이블 만들기 ;
// 표를 삭제합니다.
dtab << 창 닫기 ;
재 : JSL- 합계 : 동일한 문자열을 가진 행별로 정렬 된 qty : 도시데이터 테이블에 City 및 Qty 열이있는 경우 Analyze (분석) 메뉴 아래에서 Tabulate를 사용할 수 있습니다.
분석> 도표로 이동하십시오.
도시를 "행의 영역 삭제"로 드래그하십시오.
Qty를 지금 "N"이라고 쓰여있는 머리글로 드래그하십시오.
완료를 클릭하십시오.
나는 이것이 당신에게 그들의 대응하는 Qty 합계와 함께 도시의 정렬 목록을 주어야한다고 생각한다.
스크립트를 통해 나중에이를 재현하려면 Tabulate의 빨간색 삼각형 메뉴를 사용하여 script> Script Window에 스크립트 저장으로 이동하거나 원래 데이터 테이블 자체를 포함하여 여러 다른 위치에 저장하십시오.
희망은 도움이된다.
남자 이름