안녕하세요 팀,
여러 열을 빼기 위해 하나의 스크립트를 개발하는 데 도움이 필요합니다. 열 이름과 개수는 가변적입니다.
분석에 따라 변경될 수 있으며,
동일한 행의 모든 값의 차이로 열 델타를 채워야 합니다.
아래와 같은 샘플 데이터

예상 출력:

여러 번 사용해야 하는 경우 함수로 바꿀 수도 있습니다.
다음은 한 가지 예입니다.
- 기능
- 정규 표현식을 사용하여 관심 있는 열까지 필터링합니다.
- 각각 필터링으로 인해 JMP16이 필요합니다.
- Loc() 및 행렬 계산을 사용합니다.
- 값을 사용하여 새 열 델타를 생성합니다.
Names Default To Here(1);
//example datatable
dt = New Table("Untitled",
Add Rows(5),
Compress File When Saved(1),
New Column("Column 1",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 0, 0, 1, 0]),
Set Display Width(55)
),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([0, 2, 3, 0, 0])),
New Column("Column 3",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0, 3, 0, 0, 0]),
Set Display Width(87)
),
New Column("Column 4", Numeric, "Continuous", Format("Best", 12), Set Values([3, 0, 4, 0, 0])),
New Column("col", Character, "Nominal", Set Values({"a", "a", "a", "a", "a"}))
);
difference_between_min_max = Function({dt_ref, col_prefix_regex},
{Default Local},
//get columnn names of interest based on col_prefix
col_names_all = dt_ref << Get Column Names("Numeric", "String");
col_names_of_interest = Filter Each({val}, col_names_all,
!IsMissing(Regex(val, col_prefix_regex));
);
show(col_names_of_interest);
//all values for columns of interest, transpose for calculations
m = Transpose(dt_ref[0, col_names_of_interest]);
//replace 0 with missing to avoid calculation with those
m[Loc(m, 0)] = .;
//Get max and min values and deduct them
result = V Max(m) - V Min(m);
//Replace missing values with 0 for final results
result[Loc(result,.)] = 0;
//we could return result matrix here OR we can create new column with the function
dt_ref << New Column("delta", Numeric, Continuos, Set Values(result));
);
//example table in this example
difference_between_min_max(dt, "(Column )");
//example table by txnelson
//difference_between_min_max(Current Data Table(), "^(\D{1})$");
다음과 같이 바꿀 수도 있습니다. 사용자 정의 기능
이름을 모르고 열 수를 모른다고 가정하면 아래 코드는 필요한 수식을 만든 다음 생성된 수식을 사용하여 새 열을 만듭니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Get the columns
colNames = dt << get column names( string, continuous );
// Build the formula
theExpr = "dt<<NEW column=""></NEW>

제가 사용한 샘플 데이터 테이블이 첨부되어 있습니다
안녕하세요 짐,
의견을 보내주셔서 감사합니다.
하지만 컬럼 이름은 변수 제어이므로 실행마다 이름이 변경될 수 있습니다.
그 상황에서 코딩하는 방법은 무엇입니까?
제가 사용할 공식은 다음과 같습니다.이는 행렬에서 0이 아닌 모든 항목을 반환하는 행렬 함수 Loc()에 의존합니다.
x = :data[Row()] || :data1[Row()] ||
:data2[Row()] || :data3[Row()] ||
:data4[Row()] || :data5[Row()] ||
:data6[Row()] || :data7[Row()] ||
:data8[Row()] || :data9[Row()];
y = Loc( x );
Try( x[y[2]] - x[y[1]], . );
안녕 ,
저는 데이터 분석을 위한 스크립트를 작성 중이었고, 하나의 데이터 테이블에 대해서만 코드 사이에 이 논리를 구현하려면 이것이 필요했습니다.
내가 사용할 수 있는 코드를 가리키는 데 도움을 주실 수 있나요?
미리 감사드립니다
이제 알겠습니다. 그렇다면 개인적으로 다음에서 사용자 정의 변환 기능을 사용하겠습니다. 스크립팅 도구 추가 기능.변환하려는 모든 열(data1-data10이라고 생각함)을 선택한 다음 열 메뉴(추가 기능 설치 후 사용 가능)에서 사용자 정의 변환을 선택하고 다음 설정을 입력합니다.

안녕하세요, 답장을 보내주셔서 감사합니다.
저는 JMP15를 사용하고 있습니다. 제가 사용할 수 있는 코드를 가리키는 데 도움을 주실 수 있나요?
저는 JMP 초보자입니다.
미리 감사드립니다
안녕 @jinsejoseph
사용하고 싶은 공식의 예를 들어주실 수 있나요?이는 사용자 정의 변환을 사용하는 것처럼 들립니다. 스크립팅 도구 추가 기능.
