하위 집합 열에서 수식 수행더 큰 테이블의 하위 집합 테이블을 만들기 위한 스크립트를 만들었지만 올바르게 작동하지 않습니다. 내 목표는 사용자가 하위 집합 테이블에서 원하는 열을 선택하도록 한 다음 스크립트가 데이터를 새 테이블에 배치하기 전에 열에 수식을 수행하도록 하는 것입니다.지금까지 내 스크립트는 사용자 상호 작용을 위한 대화 상자를 표시하지만 대화 상자에서 열을 선택하면 해당 열이 하위 집합 테이블에 표시되지 않습니다. 내 문제가 어디에 있는지 잘 모르겠습니다. (참고: 사용자는 샘플 정보가 아닌 데이터가 포함된 열을 선택하므로 이 예에서는 열 이름이 "열 10..."으로 시작하는 열입니다.)
또한 수식을 어디에 삽입해야 할지 잘 모르겠습니다. 기본적으로 사용자가 대화 상자에서 선택한 열에는 < 기호가 있는 일부 셀이 있습니다. 새 하위 집합 테이블의 경우 미만 기호가 없는 셀은 0으로 바뀌고 < 기호가 있는 셀은 < 기호가 있기를 바랍니다. 하위 집합 테이블에서 옆에 있는 숫자만 배치하는 것을 제거했습니다. 따라서 새로운 하위 집합 표에는 검출된 값에 대한 0과 검출되지 않은 화합물에 대한 검출 한계가 있습니다.
지금까지 내 스크립트는 다음과 같습니다.
Names Default To Here( 1 );
dt = Data Table("Example Data");
col_dlg = new window("Column Select",
panelbox("Select columns to create NonDetect table with",
col_clist = collistbox(all, width(200)),
buttonbox("Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset(Output Table("NonDetect"),columns(col_clist));
col_dlg << close window;
)
)
);도움을 주셔서 감사합니다!
Re: 하위 집합 열에서 수식 수행이제 토론 커뮤니티 기여자에게 돈을 지불할 기회입니다....숙련된 사용자가 되어 스크립팅 가이드 및 스크립팅 인덱스를 자세히 살펴보고 참여로 보답하십시오.
Re: 하위 집합 열에서 수식 수행효과가 있었어요! 귀하의 시간과 인내심에 진심으로 감사드립니다. 진심으로 감사드립니다!
레이시
Re: 하위 집합 열에서 수식 수행Substr() 함수가 선택한 행에서 작동하지 않는 것으로 나타났습니다(이유는 확실하지 않음). 그래서 코드를 약간 변경하고 테스트했습니다(물론 마지막 버전은 테스트하지 않았습니다).
Names Default To Here( 1 );
dt = Data Table( "Example Data" );
col_dlg = New Window( "Column Select",
Panel Box( "Select columns to create NonDetect table with",
col_clist = Col List Box( all, width( 200 ) ),
Button Box( "Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset( Output Table( "NonDetect" ), columns( selected_column_list ) );
// Loop across the columns in the new data table and convert them to numeric
// Cells with nonnumeric values will be set to Missing Values, which then can
// be identified and set to 0
For( i = 1, i <= N Items( selected_column_list ), i++,
// Select all of the currently non selected columns and unselect the current ones
dt2 << select where( Contains( As Column( dt2, selected_column_list[i] ), "<" ) == 0 );
// Set for the target column all of the currently selected rows to "0"
Column( dt2, selected_column_list[i] )[dt2 << get selected rows] = "0";
// Find the rows with the "<" in them
dt2 << invert row selection;
selRows = dt2 << get selected rows;
//selRows= dt2 << Get Rows Where(Contains(As Column( dt2, selected_column_list[i] ),"<" )==1);
// Get rid of the "<" making the value a valid numeric value
For( k = 1, k <= N Rows( selRows ), k++,
Column( dt2, selected_column_list[i] )[selRows[k]] = Substr( As Column( dt2, selected_column_list[i] )[selRows[k]], 2 )
);
// Convert the column to a numeric/continuous column
Column( dt2, selected_column_list[i] ) << data type( numeric ) << modeling type( continuous );
);
col_dlg << close window;
)
)
);Re: 하위 집합 열에서 수식 수행어쩌면 내가 ('s를 잘못된 위치에 넣은 건 아닐까?) 지금 제가 가지고 있는 것은 다음과 같습니다.
Names Default To Here( 1 );
dt = Data Table( "Example Data" );
col_dlg = New Window( "Column Select",
Panel Box( "Select columns to create NonDetect table with",
col_clist = Col List Box( all, width( 200 ) ),
Button Box( "Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset( Output Table( "NonDetect" ), columns( selected_column_list ) );
// Loop across the columns in the new data table and convert them to numeric
// Cells with nonnumeric values will be set to Missing Values, which then can
// be identified and set to 0
For( i = 1, i <= N Items( selected_column_list ), i++,
// Select the rows where there is a "<" for the target column
dt2 << Select where(Contains(As Column( dt2, selected_column_list[i] ),"<" )==1);
// Get rid of the "<" making the value a valid numeric value
Column( dt2, selected_column_list[i] )[dt2 << get selected rows ()] =
substr(As Column( dt2, selected_column_list[i] ),2);
// Select all of the currently non selected columns and unselect the current ones
dt2 << invert row selection;
// Set for the target column all of the currently selected rows to "0"
Column( dt2, selected_column_list[i] )[dt2 << get selected rows ()] = "0";
// Convert the column to a numeric/continuous column
Column( dt2, selected_column_list[i] ) << data type( numeric ) <<
modeling type( continuous );
);
col_dlg << close window;
)
)
);Re: 하위 집합 열에서 수식 수행빠른 응답에 감사드립니다! 2번을 시도했지만 감지된 값은 0으로 끝나고 < 기호가 있는 모든 셀은 공백으로 표시됩니다. 1과 동일한 결과를 얻었습니다.
Re: 하위 집합 열에서 수식 수행이런.....내 오류입니다. substr() 함수의 "1"을 "2"로 변경하면 문제가 해결될 것입니다.
Re: 하위 집합 열에서 수식 수행두 번째 테이블에 보내신 두 번째 코드가 작동하지 않는 것 같습니다. 나는 다양한 것을 시도하면서 몇 시간을 보냈습니다. 나는 두 개의 ('s가 누락된 것을 발견했습니다. 이는 코드가 오류 없이 실행되는 데 도움이 되었지만 "<" 기호를 제거한 코드 부분은 제대로 작동하지 않는 것 같습니다. 해당 코드 비트를 제거하면 테이블은 감지된 값이 0으로 바로 끝나고 ND 값은 < 기호와 함께 그대로 유지됩니다. 나는 그것을 만지작거리려고 노력했지만 아직 알아내지 못했습니다. 어떤 단서가 있나요? 
감사해요!
Re: 하위 집합 열에서 수식 수행두 번째 사례를 처리하는 코드는 다음과 같습니다.
Names Default To Here( 1 );
dt = Data Table( "Example Data" );
col_dlg = New Window( "Column Select",
Panel Box( "Select columns to create NonDetect table with",
col_clist = Col List Box( all, width( 200 ) ),
Button Box( "Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset( Output Table( "NonDetect" ), columns( selected_column_list ) );
// Loop across the columns in the new data table and convert them to numeric
// Cells with nonnumeric values will be set to Missing Values, which then can
// be identified and set to 0
For( i = 1, i <= N Items( selected_column_list ), i++,
// Select the rows where there is a "<" for the target column
dt2 << Select where(Contains(As Column( dt2, selected_column_list[i] ),"<" )==1);
// Get rid of the "<" making the value a valid numeric value
Column( dt2, selected_column_list[i] )[dt2 << get selected rows )] =
substr(As Column( dt2, selected_column_list[i] ),1);
// Select all of the currently non selected columns and unselect the current ones
dt2 << invert row selection;
// Set for the target column all of the currently selected rows to "0"
Column( dt2, selected_column_list[i] )[dt2 << get selected rows )] = "0";
// Convert the column to a numeric/continuous column
Column( dt2, selected_column_list[i] ) << data type( numeric ) <<
modeling type( continuous );
);
col_dlg << close window;
)
)
);Re: 하위 집합 열에서 수식 수행이는 Detect 테이블에 적합하므로 두 번째 테이블에서는 값을 0으로 전환하여 이 접근 방식이 작동하지 않을 것이라고 생각합니다. < 기호가 있는 셀을 유지하고 나머지 셀을 0으로 바꾸고 싶습니다. 그런 다음 숫자 값만 남기고 < 기호를 제거하고 싶습니다. 내 머리 속에는 당신이 가지고 있는 대로 루프를 수행한 다음 if/else 문을 추가할 것이라고 상상합니다.
if/else 문을 게시해 주셔서 감사합니다. 내 문제는 else의 열 이름 앞에 num()이 없다는 것입니다!
Re: 하위 집합 열에서 수식 수행다음은 좋은 접근 방식이라고 생각되는 스크립트의 변경 사항입니다.내가 원하는 것은 선택한 문자 열의 값을 포함하는 숫자 열을 만드는 것입니다. 그러나 값에 "<" 기호가 포함되어 있으면 해당 항목을 0(0)으로 만듭니다.아래 스크립트는 새 열을 생성하지 않고 이를 수행합니다.열을 숫자로 변환하고 "<" 셀을 0으로 설정합니다.
Names Default To Here( 1 );
dt = Data Table( "Example Data" );
col_dlg = New Window( "Column Select",
Panel Box( "Select columns to create NonDetect table with",
col_clist = Col List Box( all, width( 200 ) ),
Button Box( "Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset( Output Table( "NonDetect" ), columns( selected_column_list ) );
// Loop across the columns in the new data table and convert them to numeric
// Cells with nonnumeric values will be set to Missing Values, which then can
// be identified and set to 0
For( i = 1, i <= N Items( selected_column_list ), i++,
// Change the column to numeric/continuous
// The names in the data table are very complex, containing symbols, etc.
// that JMP will confuse as operators. Therefore, using the Column()
// function, or a :Name(" ") function to wrap around the column name
// needs to be used
Column( dt2, selected_column_list[i] ) << data type( numeric ) <<
modeling type( continuous );
// Now find all of the rows in the table that have Missing Values
// in the target column, and then set them all to "0" in one
// statement
Column( dt2, selected_column_list[i] )[dt << get rows where(
Is Missing( As Column( dt2, selected_column_list[i] ) )
)] = 0;
);
col_dlg << close window;
)
)
);
마지막 응답에 표시한 대로 새 열을 만들고 수식을 설정할 수 있습니다.귀하가 제공한 문제는 복잡한 열 이름을 처리하는 것입니다. 작동 방식은 다음과 같습니다.
If( Contains( :Name( "Column 10 1,2,3,4,6,7,8-HpCDD" ), "<" ),
0,
Num( :Name( "Column 10 1,2,3,4,6,7,8-HpCDD" ) )
)
Re: 하위 집합 열에서 수식 수행제 생각엔 이것이 제가 고민하는 부분이라고 생각합니다. 저는 Excel에 매우 능숙하고 9년 동안 Excel에서 모든 데이터 분석을 수행해 왔습니다. 나는 단지 전환을 시도하고 있는데 jmp의 if/then 문을 사용하는 데 어려움을 겪고 있습니다(무엇보다도). 엑셀로 작성하겠습니다. 혹시 도움이 되셨나요?
나는 이 하위 집합 테이블 중 두 개를 만들 것입니다. 하나는 감지된 값이고 다른 하나는 감지되지 않은 값입니다. 감지된 값에 대해 =if(isnumber(J2),J2,0)와 같은 if/then 문을 수행합니다. 감지되지 않은 값의 경우 =if(isnumber(J2),0,J2)와 같은 작업을 수행합니다.
JMP에서 이를 다음과 같이 전환하려고 했습니다.
만약에 ( 포함 (: 컬럼 10 1,2,3,4,6,7,8-HpCDD , "<" ), 0 ,:열 10 1,2,3,4,6,7,8-HpCDD )
그런데 제가 직접 컬럼을 생성하고 수식을 삽입해도 안되는 것 같습니다.
따라서 기본적으로 내 스크립트에는 NonDetect 테이블용 부분과 Detect 테이블용 부분의 두 부분이 포함됩니다. 그리고 if then 문을 사용하여 열을 이와 같이 변환하고 싶습니다. 결국에는 NonDetect 하위 집합에 남아 있는 DL을 사용하여 비감지 값을 대치하기 위해 두 개의 데이터 테이블을 R로 보냅니다. 그게 설명이 되길 바라요?
Re: 하위 집합 열에서 수식 수행계산하려는 공식은 무엇입니까?실제로 새 열을 만들어야 합니까?기억하세요, 이것은 엑셀이 아닙니다.값이나 결과를 생성하기 위해 열에 배치할 필요는 없습니다....다른 구조가 있습니다.당신이 하려는 일을 더 자세히 설명해 주실 수 있나요?
Re: 하위 집합 열에서 수식 수행아, 그렇군요.
새 테이블에 배치되기 전에 데이터에 대한 수식을 완성할 수 있는 방법이 있습니까? 그렇지 않은 경우 하위 집합 테이블에 새 열을 만들고 새 열에서 계산을 완료한 다음 스크립트를 사용하여 원래 열을 삭제해야 한다고 생각했습니다. 이를 수행하는 더 효율적인 방법이 있습니까?
감사해요!
Re: 하위 집합 열에서 수식 수행Selected_column_list에 배치한 표시 개체의 내용이 아닌 col_clist를 참조하고 있었습니다.
Names Default To Here( 1 );
dt = Data Table( "Example Data" );
col_dlg = New Window( "Column Select",
Panel Box( "Select columns to create NonDetect table with",
col_clist = Col List Box( all, width( 200 ) ),
Button Box( "Ok",
selected_column_list = col_clist << getselected;
dt2 = dt << Subset( Output Table( "NonDetect" ), columns( selected_column_list ) );
col_dlg << close window;
)
)
);