col2 및 col3이 특정 문자열과 일치하는 행을 찾은 다음 해당 행의 col7에 있는 셀 값을 반환하는 스크립트를 작성했습니다.그러나 이러한 변수를 새 테이블의 새 열에 쓰는 데 문제가 있습니다.
....
New Table( "Results",Add Rows( 2 ),
New Column( " FUS",Character,"Nominal",
Set Values({"Fus1","Fus2"})),
New Column( "PASS/FAIL",continuous,"Nominal", formula( Name Expr(APass)),formula(Name Expr(BPass)));
)여기서 APass와 Bpass는 각각의 검색 행의 column7 값과 동일한 변수이다.각각 Pass 및 Fail 문자열입니다.그러나 테이블을 만들 때 마지막 함수는 전체 테이블에서 결과를 무시하고 채웁니다. 따라서 테이블은 Fus1-Pass Fus2-Fail이어야 하지만 Fus1-Fail Fus2-Fail을 출력합니다.순서를 바꾸면 반대입니다.
여러 변수로 새 열을 채우는 방법에 대한 도움말이 있습니까?
매우 감사
이 주제에 대한 이전 토론에서 언급했듯이 열에 대해 공식을 정의할 필요는 없습니다.다음은 Big Class 데이터 테이블을 사용하는 간단한 그림입니다.열에 대해 2개의 수식을 정의하면 두 번째 수식이 첫 번째 수식을 대체합니다.
new column("two formula", formula(:height), formula(:weight));
다음 결과를 제공합니다

정의된 두 번째 공식은 JMP가 사용하는 공식입니다.
이것은 공식이 복잡할 수 없다는 것을 말하는 것이 아닙니다.실제로 각 행을 다르게 처리하는 공식을 정의할 수 있습니다.하나의 공식으로 정의하면 됩니다.다음은 여러 열을 수식으로 가져오고 두 열을 비교하는 보다 복잡한 수식의 간단한 예입니다.
New Column( "combined formula",
formula(
If(
:Sex == "F" & :age > 12, :weight,
:Sex == "F" & :age <= 12, :height,
:Sex == "M" & :age > 13, :weight,
:Sex == "M" & :age <= 13, :height
)
)
)

나는 이 응답을 SMW에 개인적으로 제공했습니다. 바라건대 그것은 다른 사람들을 도울 것입니다.
이 코드를 실행해 보십시오.무슨 일이 일어나는지 보려면 로그 창을 보십시오.함수가 실제 행 번호가 아닌 행렬을 반환하는 행 가져오기.행 값을 사용하려면 행렬을 반복해야 합니다.
Names Default To Here( 1 );
dt1 = New Table( "Test", Add Rows( 4 ),
New Column( "Column 1", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] ) ),
New Column( "Column 2", Character, "Nominal",
Set Values( {"This is EMOTIONAL", "abc", "EMO", "Here's an EMO example"} ) ),
New Column( "Column 3", Character, "Nominal",
Set Values(
{"And not KLARIFIED", "KLA", "xyz", "This contains KLA string"} ) ),
New Column( "Column 4", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 5", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 6", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 7", Character, "Nominal",
Set Values( {"Hello", "World", "Fubar", "Ski"} ) ),
);
match_rows = dt1 << get rows where(contains(as column(2),"EMO")
& contains(as column(3),"KLA"));
for (i = 1, i <= nrows(match_rows), i++,
one_row = match_rows[i];
apass = column(dt1, 7)[one_row];
print(apass);
);