2개 열의 값을 하나로 병합(혼합 숫자 및 문자 값)안녕
숫자 값을 포함하는 열 하나와 문자열을 포함하는 열 하나, 총 2개의 열이 있습니다.
문자열 값이 '매개변수'이면 숫자 값을 가져오고, 그렇지 않으면 문자열 값을 가져오는 세 번째 열을 만들고 싶습니다.
이걸 시도해 보았는데, 문자 유형 열로 정의되어 있음에도 "TEST_RESULT 열에 숫자 값이 필요합니다."라는 오류가 발생합니다.
필요하다면 JMP15를 사용하겠습니다.
col_test_result =dt <
<NEW column=""></NEW>
Later on I want to split this column so the output table will have either numeric or character type data, will JMP be able to set it to numeric based<BR />on the contents although the source column was character?
<BR /><BR />
<LINGO-LABS id="lingo-labs-536312" slang="en-US" mode="UPDATE">
<LINGO-LABEL>고급 통계 모델링</LINGO-LABEL>
<LINGO-LABEL>콘텐츠 구성</LINGO-LABEL>
<LINGO-LABEL>데이터 블렌딩 및 정리</LINGO-LABEL>
<LINGO-LABEL>대량 맞춤화</LINGO-LABEL>
<LINGO-LABEL>품질 및 공정 엔지니어링</LINGO-LABEL>
<LINGO-LABEL>결과 공유 및 전달</LINGO-LABEL>
</LINGO-LABS>
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)숫자 데이터를 문자로 변환하려면 Char() 함수를 사용해야 합니다.
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)한 열에 혼합 값을 가질 수 없습니다. 숫자 값인 경우 :NUMERIC_RESULT 주위에 Char()를 추가할 수 있습니다.
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
그리고 열을 분할할 때 데이터 유형을 원하는 대로 설정하기만 하면 됩니다. 숫자 열에 문자 값이 있는 경우 해당 값이 누락으로 변경됩니다.
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)감사 ! 'char()'을 추가하면 첫 번째 문제가 해결되었습니다.
하지만 지금은 병합된 열을 분할한 후 2개의 다른 문제가 있습니다.
다른 열로 분할하고 있으므로 결과 열에는 모두 한 가지 유형의 데이터(문자열 또는 숫자)가 있고 ~150개의 다른 열이 있습니다.
문제:
1. 모든 분할 열은 병합된 열의 원래 수식과 함께 유지됩니다. 원본 열을 값으로 만드는 방법(예: Excel - 특별한 값 붙여넣기).
2. 모든 분할 열은 문자 유형으로 생성되며 내가 원하는 것이 아닙니다. 내용에 따라 자동 유형을 갖기를 원합니다.
csv 파일을 열 때 - JMP는 유형을 자동으로 설정하므로 열의 모든 값이 숫자이면 숫자 유형이 됩니다.
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)다음은 데이터 테이블을 살펴보고 모든 유효한 숫자 값으로 구성된 모든 문자 열을 숫자 데이터 유형으로 변환하는 작은 코드입니다.
Names Default To Here( 1 );
dt = Current Data Table();
For Each( {value, index}, dt << get column names( string ),
If( Column( value ) << get data type == "Character",
vals = Column( value ) << get values;
nonMissing = Col Number( As Column( value ) );
Column( value ) << set data type( numeric ) << modeling type( continuous );
If( nonMissing != Col Number( As Column( value ) ),
Column( value ) << set data type( character ) << set values( vals )
);
)
);Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)감사 ! 그것은 내가 필요로하는 것처럼 보이지만 불행히도 작동하지 않습니다.
디버깅을 시도했습니다. 첫 번째 줄이 작동 중입니다. 열 이름 목록을 가져옵니다.
두 번째는 아래 오류가 발생합니다. 어떤 생각?

Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)댓글처럼:
제한은 없지만, 각 열마다 데이터 유형이 정의되어 있어 필요에 따라 능동적으로 설정할 수 있다는 것이 JMP의 기본 마인드입니다.
데이터 유형이 제대로 설정되면 다음 분석을 수행하기가 매우 쉽습니다.
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)< 버전 16을 사용하고 있다고 생각하므로 std "For" 구문을 사용해야 합니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// JMP16 "For Each"
dt << get column names( string );
For Each( {value, index}, dt << get column names( string ), Print( value ) );
// JMP <16 "For"
col_lst = dt << get column names( string );
For( i = 1, i <= N Items( col_lst ), i++,
Print( col_lst[i] )
);
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)
감사합니다. 지금 작동합니다!
이제 한 가지만 - 어떻게 원래 공식을 제거합니까? 나는 수식의 결과 값을 원합니다. 가능합니까?
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)
잘 작동합니다.. 문제를 찾았습니다. 고정 문자열 내용이 있는 'char' 데이터 유형의 열이 있습니다: "R001"
스크립트를 실행한 후 값이 '1'인 숫자 유형으로 변경됩니다. 왜 이런 일이 일어나고 있습니까?
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)모든 숫자 값이 뒤에 오는 R은 JMP에서 통화로 해석됩니다.남아프리카 랜드의 표기법은 R123 또는 R55.67 등의 형식입니다. 따라서 JMP는 이를 숫자 값으로 해석합니다.이 예외를 확인하기 위해 코드에 확인을 추가할 수 있습니다.
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)
와우 이게 나올 줄은 몰랐네요
도와 주셔서 정말로 고맙습니다!
Re: 2개 열의 값을 하나로 병합(숫자와 문자 값 혼합)JMP 17에는 num("R001", <<제한 ) 이 동작을 방지합니다.