데이터 테이블에 있는 경우 특정 열을 합산하는 스크립트를 작성하려고 합니다. Col A, Col B, Col C, Col D라고 부르겠습니다. 문제는 데이터 테이블에 항상 오류가 발생하는 4개의 열이 모두 있는 것은 아니라는 것입니다. 데이터 테이블에 있는 Col A, Col B, Col C, Col D를 추가할 수 있는 스크립트를 작성하고 싶습니다. 분명히 매번 존재하는 코드를 업데이트할 수 있지만 오류 없이 다양한 데이터 테이블을 처리할 수 있는 자동화된 방법을 찾으려고 합니다.
감사해요!
안녕하세요 @DegreeOfGen19 ,
찾고 있는 것과 비슷한가요?
Names default to here(1);
dt = current data table();
// your columns of interest
col_list = { "Col A", "Col B", "Col C", "Col D" };
// creates list of column names from the target data table
dt_col_list = dt << Get column names( string );
for( i = 1, i <= N Items( col_list ), i++,
if( contains( dt_col_list, col_list[i] ),
mysum = colsum( column( col_list[i] ) );
show( mysum )
)
);
편집: 변경된 dt << 열 이름 가져오기; to dt << 열 이름 가져오기( 문자열 ); 이렇게 하면 반환되는 열 이름이 각각 사용자 정의 열 목록인 문자열이 됩니다.처음에 그것을 잡지 못한 것에 대한 나의 나쁜.
다음은 수행할 수 있는 몇 가지 예입니다. 찾은 열을 필터링하는 더 간단한(이해하기 쉬운) 방법이 있지만 연관 배열은 이러한 유형의 사용 사례에 적합합니다.
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(1),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Set Values([1,2,3,.])),
New Column("Column 2", Numeric, "Continuous", Set Values([2,3,4,5])),
New Column("Column 3", Numeric, "Continuous", Set Values([3,4,5,.]))
);
col_list = {"Column 1", "Column 2", "Column 3", "Column 4"};
table_col_list = dt << Get Column Names("String");
// keep only columns which are found from data table
cols_to_keep = Associative Array(col_list);
cols_to_keep << Intersect(Associative Array(table_col_list));
cols_to_keep = cols_to_keep << get keys;
// if you don't need a formula, data table subscripting is quite easy solution
dt << New Column("SumForCols", Numeric, Continuous, << Set Each Value(
Sum(dt[Row(), cols_to_keep]);
));
// if you do need a formula, you can build one with expressions (requires JMP16+ due to For Each usage)
// https://community.jmp.com/t5/JSL-Cookbook/Insert-one-expression-into-another-using-Eval-Insert-Eval-Expr/ta-p/48998
f_expr = Expr(Sum());
For Each({col_name}, cols_to_keep,
Insert Into(f_expr, Name Expr(AsColumn(col_name)));
);
show(name expr(f_expr));
Eval(EvalExpr(
dt << New Column("SumForColsFormula", Numeric, Continuous, Formula(
Expr(name expr(f_expr));
))
));
먼저 다음을 사용하여 원하는 목록의 데이터 테이블에 어떤 열이 있는지 계산합니다. 연관 배열 및 교차 . 그런 다음 <<를 사용하여 각 값을 설정하고 두 가지 옵션이 있습니다. 데이터 테이블 첨자 합계를 계산하거나 수식 표현식을 작성하고 사용 저것