외부 jmp에서 열에 수식을 사용하여 테이블 만들기 - Random Normal()안녕,
열 속성 내부에 수식을 포함하는 새 테이블을 생성하는 JSL 코드를 알려주실 수 있는 분이 있나요?
수식에 대한 테이블 크기, 열 이름 및 매개변수는 첨부된 외부 jmp 파일에서 제공됩니다.
누군가 코드 조각을 공유해 줄 수 있나요? 어떻게 시작하는지 알려주세요.
대량 맞춤화Re: 열에 수식이 있는 테이블 만들기 - Random Normal() - 외부 jmp에서열 1을 제거하는 것은 스크립트에서 쉽기 때문에 문제가 되지 않습니다. 특정 이름으로 열을 만들거나 인덱스를 사용하여 제거합니다.
Names Default To Here(1);
dt = New Table("testtable", add rows(1),
new column("REMOVETHIS")
);
wait(1); //for demonstration purposes<BR />//dt << Delete Column(1);
dt << Delete Columns("REMOVETHIS");Set Each 값 사용 공식이 필요하지 않은 경우 더 빠르므로 값이 더 좋습니다.
학습을 위해... Eval(EvalExpr())은 확실히 이해하기 가장 쉬운 것은 아니지만 도움이 될 만한 내용이 있습니다. 신속하게 확인하여 다음을 찾았습니다.
Re: 열에 수식이 있는 테이블 만들기 - Random Normal() - 외부 jmp에서실제 스크립트는 정의되지 않은 열 " Clolumn 1"을 생성합니다.
그리고 New Table() 내부에 열을 생성해도 이러한 열이 생성되지 않습니다. 그냥 화장품인데...
그 사이에 단일 열 정의가 있고 나머지는 새 열 외부에 추가되는 스크립트가 있습니다.
그리고 새로 생성된 테이블에는 올바른 계산 값이 있습니다. 그러나 수식 내부를 보면 스크립트의 식이 포함되어 있습니다.
나는 다음을 사용하여 이 사실을 가릴 수 있습니다. 각 값()을 설정합니다. 그러나 그것은 나를 미치게 만듭니다 ... 
이제 표현식이 제대로 평가되지 않는 이유를 이해하는 데 집착합니다. Eval() Eval Expr() 및 Expr()을 사용하여 성공하지 못했습니다. 나는 그들의 기능을 이해하지 못한다고 생각하지만 Formula와 결합하면 기회가 없습니다.
그러나 내 초기 문제는 귀하의 제안으로 해결되었습니다. 감사!
Re: 열에 수식이 있는 테이블 만들기 - Random Normal() - 외부 jmp에서New Table() 내부에 열을 생성하려는 특별한 이유가 있습니까? 나는 그것이 가능한지 확실하지 않으며 가능하다면 New Table() 이후에 생성하는 것과 비교할 때 코드를 더 지저분하게 만들 가능성이 큽니다.
Re: 열에 수식이 있는 테이블 만들기 - Random Normal() - 외부 jmp에서감사! 바로 아래의 이 코드로 작동했습니다. 그리고 많은 도움이 됩니다!!
그러나 지금은 약간의 JSL을 배우고자 하는 동기가 있습니다. 그리고 나는 가능한 구현에 대해 강경했다. 두 번째 코드.
Clear Globals();
Names Default To Here( 1 );
//mydt =
//Data Table( "dt_RandomNormalParameter" ) <<
mydt = Current Data Table();
// New data table
my_newdt = New Table( "Table Name", Add Row ( 1000 ));
//lets use formulas, we can easily add more rows if needed
For Each Row(
mydt,
columnName = As Column(mydt, "Analysis Columns");
meanValue = As Column(mydt, "Mean");
stdDevValue = As Column(mydt, "Std Dev");
//use eval expr to get values in formula
Eval(Eval Expr(my_newdt << New Column(columnName, Numeric, Continuous, Formula(Random Normal(Expr(meanValue), Expr(stdDevValue))))));
);
// Code adds Column "Column 1"
내 문제를 해결하기 위한 내 개념:
Clear Globals();
Names Default To Here( 1 );
mydt = Current Data Table();
// New data table
my_newdt = New Table( "Table Name",
Add Rows (N Rows ( mydt )), // row count can be set by hand e.g. 1000
//For ( i = 1, i <= N Rows ( mydt ), i++, // for loop is not executed
New Column( Column(mydt, 1 )[1] , // Loop i==1
Numeric,
"Continuous",
Format( "Best", 6 ),
Formula( Random Normal( Column(mydt, :Mean )[1], Column(mydt, :Std Dev )[1] ) )// Column(mydt, :Mean )[1] is not evalueted
),
New Column( Column(mydt, 1 )[2] , // Loop i ==2
Numeric,
"Continuous",
Format( "Best", 6 ),
Formula( Random Normal( Column(mydt, :Mean )[2], Column(mydt, :Std Dev )[2] ) )//// Column(mydt, :Mean )[1] is not evalueted
)
//)// for loop
)// New data table불행히도 " New Table" 내부의 "for 루프"와 Formula 내부의 evaluete 인덱스를 사용하는 방법을 모르겠습니다.
나는 Eval, Eval Expr을 어떻게 사용하는지 가정합니다.
하지만 구문을 이해하지 못합니다.
내 개념이 적절한 구문으로도 작동할 수 있다고 믿습니까?
수정해야 할 사항은 무엇입니까?
Re: 열에 수식이 있는 테이블 만들기 - Random Normal() - 외부 jmp에서For Each Row를 사용하여 RandomNormal_dt.jmp를 반복한 다음 열에서 값을 가져올 수 있습니다. 사용 Eval(EvalExpr())을 사용하여 수식에 값을 추가합니다.
Names Default To Here(1);
dt_random = New Table("RandomNormal_dt",
Add Rows(20),
New Column("Analysis Columns",
Character(6),
"Nominal",
Set Values(
{"Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7", "Name8", "Name9", "Name10", "Name11", "Name12", "Name13", "Name14","Name15", "Name16", "Name17", "Name18", "Name19", "Name20"}
),
),
New Column("Mean", Numeric, "Continuous", Format("Best", 6), Set Values([1, 1, 0, 0, 0, 2, 2, 3, 3, 5, 10, -5, -6, 3, 3, 3, 3, 3, 0.5, 0.5]), ),
New Column("Std Dev",
Numeric,
"Continuous",
Format("Best", 6),
Set Values(
[0.0059167075785471, 0.00455419279075633, 0.00421951193571742, 0.00421951193571742, 0.00440945078910684, 0.00440945078910684,
0.0102216984358101, 0.00419398115162298, 0.0808821732109718, 0.0876924473662647, 0.119338972830502, 0.0918654224334168,
0.0921864791037008, 0.0868549769597964, 0.0808821732109718, 0.0865262154672911, 0.186459394109712, 0.189566585675401, 0.0876924449303901,
0.0434724818197371]
),
)
);
//create collection table
dt = New Table("Analysis");
//lets use formulas, we can easily add more rows if needed
For Each Row(
dt_random,
columnName = As Column(dt_random, "Analysis Columns");
meanValue = As Column(dt_random, "Mean");
stdDevValue = As Column(dt_random, "Std Dev");
//use eval expr to get values in formula
Eval(Eval Expr(dt << New Column(columnName, Numeric, Continuous, Formula(Random Normal(Expr(meanValue), Expr(stdDevValue))))));
);

그런 다음 필요에 따라 행을 추가할 수 있습니다. 행을 추가한 후 수식을 제거하여 필요한 경우 데이터 테이블을 더 빠르게 만들 수 있습니다. 필요한 행 수를 알고 있다면 Formula()를 << Set Each Value()로 바꾸고 충분한 행으로 컬렉션을 만들 수 있습니다.