파일에서 변수를 저장하고 jsl 스크립팅에서 최대 함수에 사용안녕하세요 회원님들 ,
새로운 사용자가 JSL 스크립팅을 시작했습니다. 필요에 따라 실행하는 방법을 제안해 주시겠습니까?
2개의 파일이 있습니다.
File1 : 수천 개의 열(문자열)과 행(숫자)이 있는 데이터를 포함합니다.
File2: file1에서 관심 있는 열을 선택하기 위해 수동으로 만든 열 목록이 거의 없습니다.
내 필요는 파일 2의 목록을 기반으로 최대 기능을 수행하고 파일 1에 새 열을 만드는 것입니다.
아래는 내가 시도했지만 예상대로 작동하지 않는 코드입니다.
dt = 열기("C:/File2.csv")
list = dt << get name; // list = 기본적으로 file1 = row 1, row2, row10 등의 임의 열 이름입니다.
dt1 = 열기("C:/File1.jmp")
새 열( "최대 목록",Numeric,Formula(최대(목록)));
데이터 테이블스크립팅Re: 파일에서 변수를 저장하고 jsl 스크립팅에서 최대 함수에 사용데이터가 어떻게 생겼는지 확실하지 않지만 여기에 한 가지 제안이 있습니다. 가장 단순해 보이는 솔루션이 아니며 JMP16+가 필요합니다.
Names Default To Here(1);
dt = New Table("File2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Format("Best", 12), Set Values({"Column 1", "Column 2"}))
);
dt1 = New Table("File1",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 1])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([2, 2, 2])),
New Column("Column 3", Numeric, "Continuous", Format("Best", 12), Set Values([3, 3, 3]))
);
Show(dt << Get Name); // this will get name of the datatable not columns
max_list = Column(dt, "Column 1") << get values;
expr_max = Expr(Max());
For Each({col}, max_list,
Insert Into(expr_max, NameExpr(AsColumn(Column(dt1, col))))
);
Show(NameExpr(expr_max));
Eval(EvalExpr(
dt1 << New Column("MaxList", Numeric, Continuous, Formula(
Expr(NameExpr(expr_max))
));
));
Eval Insert, Eval Expr, Parse 및 Substitute를 사용하여 한 표현식을 다른 표현식에 삽입 좋은 읽기를 위해
Re: 파일에서 변수를 저장하고 jsl 스크립팅에서 max 함수에 사용정말 고마워요 txnelson님,
그것은 효과가 있었다. file2에서 Maxlist 열 이름을 사용하지 않는 단순한 실수를 범했습니다.
하지만 또 다른 오류가 발생했습니다. 네임스페이스 " office1.close:today "는 정의되지 않았습니다. 인수 또는 목록 인수의 단일 행렬에 있는 값 중 최대값을 반환합니다.
" office1.close:today "는 file2 중 하나입니다.
file1 maxlist 열을 열고 수식 편집을 클릭하면 오류가 발생합니다.
Re: 파일에서 변수를 저장하고 jsl 스크립팅에서 max 함수에 사용나는 귀하의 최신 게시물을 다시 살펴보았고 귀하가 해당 게시물에서 노출한 복잡한 이름 문제를 처리할 새로운 스크립트가 있다고 믿습니다.
// The code below this line is the that does the calculations The code above this line would
// not normally be included
Names Default To Here( 1 );
// point to the large data table with lots of rows and columns
dt = Data Table( "Main" );
// If you are opening the table from a folder, this statement would be
// dt = open("the path to the table");
// point to the second data table that contains a list of columns to be summed
dtMax = Data Table( "config" );
// If you are opening the table from a folder, this statement would be
// dtMax = open("the path to the table");
// Just added a short pause so one can see the original tables before changing
// Create the new columns
For( i = 1, i <= N Cols( dtMax ), i++,
sumList = Column( dtMax, i ) << get values;
dt << New Column( Column( dtMax, i ) << get name );
nameList = ":\!"" || sumList[1] || "\!"n";
For( k = 2, k <= N Rows( dtMax ), k++,
Insert Into( nameList, ", :\!"" || sumList[k] || "\!"n" )
);
Column( dt, N Cols( dt ) ) << set formula( Eval( Parse( "max(" || nameList || ")" ) ) );
);Re: 파일에서 변수 저장 및 JSL 스크립팅의 for max 함수 사용
제안해 주셔서 감사합니다. 예상대로 작동하지 않았습니다. 제가 뭔가 잘못하고 있는 것 같습니다. 더 명확하게 설명하기 위해 파일의 모양과 요구 사항을 제공했습니다.
file1은 다음과 같습니다. (여기는 office1, 2, 4에서 최대값을 찾고 싶은 기본 테이블입니다.)
| 사무실1 | 오피스2 | 오피스3 | 오피스4 | 사무실 5 |
| 2 | 3 | 0 | 6 | 1 |
| 3 | 2 | 6 | 4 | 4 |
| 2 | 5 | 3 | 2 | 3 |
| 1 | 0 | 2 | 3 | 2 |
| 4 | 1 | 2 | 7 | 1 |
| | | | | |
새 열 Maxlist(office1,2,4의 값) 로 출력이 예상됩니다.
간단한 해결책: New Column("MaxList", Numeric, Continuous, Formula(Max(:"office1",:"office2,:"office4")));
| 사무실1 | 오피스2 | 오피스3 | 오피스4 | 사무실 5 | .. | 맥스리스트 | | |
| 2 | 3 | 0 | 6 | 1 | | 6 | | |
| 3 | 2 | 6 | 4 | 4 | | 4 | | |
| 2 | 5 | 3 | 2 | 3 | | 5 | | |
| 1 | 0 | 2 | 3 | 2 | | 3 | | |
| 4 | 1 | 2 | 7 | 1 | | 7 | | |
| | | | | | | | | |
내 maxlist가 매일 변경되기 때문에 max list에 대한 입력 매개변수로 다른 file2를 사용하고 싶습니다.
file2: 입력 매개변수로 주어진 열 이름 목록 및 스크립트 실행
파일2에 최대 목록을 제공하고 파일1에서 실행할 수 있는 솔루션을 찾고 있습니다.
새로운 열("MaxList", 숫자, 연속형, 수식(Max( file2 목록 기반 ")));