Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.만약을 대비해 테이블이 부착되어 있습니다.
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.이것은 당신이 무엇을 할 수 있는지에 대한 몇 가지 아이디어를 줄 수 있습니다
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(2),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"<1", "<3"})),
New Column("Column 2", Character, "Nominal", Set Values({"<2", "<4"}))
);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
dt << New Column(col_name ||"_Q", Numeric, Continuous, << Set Each Value(
Num(Substitute(AsColumn(dt, col_name), "<", ""));
));
);
Substitute()에 대한 스크립팅 색인 및 스크립팅 가이드 검색을 통해 사용 방법에 대해 자세히 알아보세요.
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.해당 부분을 테이블에 대한 참조로 대체하십시오. 어떤 열을 사용해야 하는지 알고 있는 경우 열 선택을 정리할 수도 있습니다(모든 열을 가져오기 위해 << get 열 이름("String")을 사용하는 대신).
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.불행히도 해당 코드가 원래 질문에 어떻게 적용되는지 따르지 않습니다.아마도 원래 게시물에 명확하지 않았거나 뭔가 빠졌을 것입니다(저는 jsl 초보자입니다).어쨌든 나는 계속 노력할 것이며 내 질문을 다시 구성해야 할 수도 있습니다.(그런데, 나는 매우 많은 수의 열을 사용하고 있으며 날짜/시간 열을 제외한 모든 열은 이 처리가 필요합니다. 손으로 정의하기에는 너무 많습니다.) 다시 한 번 감사드립니다.
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.다음은 < 및 "J" 또는 "UJ" 등과 같은 포스트 스크립트 값을 확인하고 해당 값을 새 한정자 열로 이동하는 스크립트입니다.그런 다음 해당 열을 문자 열에서 숫자 열로 변환합니다.

Names Default To Here( 1 );
dt = Current Data Table();
colNames = dt << get column names( string, character );
For Each( {col, i}, colNames,
GTFound = "NO";
postScriptFound = "NO";
// Find rows that have < in them
theRows = dt << get rows where( Contains( As Column( dt, col ), "<" ) );
// If < is found then
// 1. Create a new column to hold the < in
// 2. Loop through the rows with < and
// 1. Add < to the appropriate row in the new Qualifier column
// 2. Delete the < from the current column
If( N Rows( theRows ) > 0,
GTFound = "YES";
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = "<";
As Column( dt, col )[fixRow] = Substr( Column( col )[fixRow], 2 );
);
);
// Find if there are any post script values on any of the rows
theRows = dt << get rows where( Word( 2, As Column( dt, col ), " " ) != "" );
// If found, then if a new column has not already been add, add the new Qualifer column
If( N Rows( theRows ) > 0,
postScriptFound = "YES";
If( GTFound == "NO",
dt << add Multiple Columns( col, 1, Character );
Column( dt, N Cols( dt ) ) << set name( col || "_QUALIFIER" );
dt << move selected column( after( As Column( col ) ) );
);
// Loop through the rows with post scripts and
// 1. Add the post scripts to the Qualifer column
// 2. Delete the post scripts from the current column
For Each( {fixRow, k}, theRows,
As Column( dt, col || "_QUALIFIER" )[fixRow] = Trim(
As Column( dt, col || "_QUALIFIER" )[fixRow] || " " || Word( 2, As Column( dt, col )[fixRow], " " )
);
As Column( dt, col )[fixRow] = Word( 1, As Column( dt, col )[fixRow], " " );
);
);
// If eiter < or Post Scripts were found, convert the column to numeric, continuous
If( GTFound == "YES" | postScriptFound == "YES",
Column( dt, col ) << data type( numeric ) << modeling type( continuous )
);
);
문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.안녕하세요. 텍스트 문자열로 입력된 실험실 결과(숫자 값)로 구성된 열이 있는 테이블이 있습니다.일부는 숫자 값 앞에 "<"가 있기 때문에 텍스트 문자열입니다.값에 대해 숫자 계산을 수행할 수 있어야 하므로 "<" 기호를 제거하고 "ORIGCOLNAME_QUALIFIER"라는 새 열에 배치하려고 합니다. 여기서 ORIGCOLNAME은 "< " 기호가 제거되었습니다.)
불행히도 아래 코드는 작동하지 않습니다.
Names Default To Here( 1 );
dt = Current Data Table();
compList = {};
For( i = 1, i <= N Cols( dt ), i++,
colName = Column( dt, i ) << get name;
);
// Create the columns
For Each( {comp, i}, compList,
Eval(
Parse(
"dt << New Column( \!"" || compList[i] || "_QUALIFIER" ||
"\!",
character, nominal,
formula(
x=.;
if (comp << contains ("<"), x = <);
다음 메시지가 나타납니다.

모든 의견을 보내주시면 감사하겠습니다.
기본 데이터 분석 및 모델링콘텐츠 구성데이터 혼합 및 정리Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.감사합니다 jthi - 코드의 첫 번째 부분은 미리 이름이 지정된 열이 있는 새로운 2행 테이블을 만듭니다.
Names Default To Here( 1 );
dt = New Table( "Untitled",
Add Rows( 2 ),
Compress File When Saved( 1 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"<1", "<3"} ) ),
New Column( "Column 2", Character, "Nominal", Set Values( {"<2", "<4"} ) )
);
그러나 각 기존 열에 해당하는 이름이 있지만 끝에 "_qualifier"가 있는 새 열을 추가하는 동안 열 이름을 그대로 유지하려고 합니다.(예: 기존 열이 염화물(문자), 황산염(황산염) ...이라고 가정하면 새 열은 염화물(숫자), 황산염(숫자), 염화물_한정자(문자), 황산염_한정자(문자) 등이 됩니다.
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.그것은 완벽하게 작동했습니다.그리고 주석 줄은 프로세스의 각 단계를 이해하는 데 도움이 되므로 가장 유용합니다.이는 JSL 기본 사항을 내 데이터 세트에 실제로 적용하는 방법을 배우면서 도움말 문서에서 찾을 수 있는 내용을 보강합니다.매우 감사합니다.
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.귀하의 요구 사항을 이해하지 못할 수도 있으며 특히 데이터에 많은 행이 있는 경우 이 작업을 수행하는 더 효율적인 방법이 있을 수 있습니다. 그러나 이 테이블이 원하는 결과와 같을 경우 무차별 대입 방법이 있습니다.

Names Default To Here(1);
id_colnames = {"well", "Sample Date"};
dt = Current Data Table();
nr =nrow(dt);
col_names = dt << Get Column Names("String");
For Each({col_name}, col_names,
If( !Contains(id_colnames, col_name),
dt << New Column(col_name||"_Q", Character, << Set Each Value(
If(Contains(AsColumn(dt,col_name), "<"), "<",""))
);
curr_col = column(dt,col_name);
For(i=1, i<=nr, i++,
curr_col[i]= Substitute( word(1, curr_col[i]) ,"<","");
);
curr_col << Set Data Type(Numeric) << Set Modeling Type ("Continuous");
); // end If()
); //end For Each()
Re: 문자("<")가 있는 열을 숫자로 재설정하고 다른 열에 "<"를 유지하려고 합니다.GZMorngan0님, 감사합니다!죄송합니다. 응답이 느려졌습니다.방금 스레드에서 다시 확인했습니다.
또 다른 기술을 만나서 감사합니다.