JSON Panda Split에 대한 열 데이터 유형 설정저는 Panda Split 포맷을 사용하여 JSON 파일을 가져오기 위해 JSL을 사용하고 있습니다. 이렇게 하면 모든 열이 문자로 가져오지만 실제로는 문자와 숫자의 조합이어야 합니다. 각각을 숫자로 변환하는 JSL 스크립트를 작성할 수 있지만, 이렇게 하면 문자 열도 변환되고(그리고 해당 데이터도 삭제됩니다).
JSL을 사용하면 데이터 유형이 문자인지 숫자인지 감지하여 그에 따라 변환할 수 있나요? 아니면 가져오기 단계에서 이를 수행할 방법이 있나요? 특정 파일의 열을 미리 알지 못합니다.
한국어: JMP 18.1.1
dt_cols = dt << Get Column Names();
For Each({col, i}, dt_cols,
Try(
// No warning, just converts everything.
As Column(dt, col) << Data Type("Numeric");
As Column(dt, col) << Modeling Type( "Continuous" );
);
);데이터 접근윈도우Re: JSON Panda Split에 대한 열 데이터 유형 설정이를 테스트할 적절한 예제가 없습니다(JMP가 제가 급히 얻은 JSON 예제와 충돌합니다). 따라서 JSON 마법사에서 이를 수행할 방법이 있는지 테스트할 수 없습니다.
먼저 열의 값을 확인한 다음 해당 값을 적절히 변환하여 숫자 값만 변환할 수 있습니다.
변환을 수행하는 한 가지 방법은 먼저 열의 일부 값을 확인한 다음 값이 정상이면 변환하는 것입니다. 확인할 수 있는 몇 가지 옵션
- 첫 번째 값만 확인하세요
- 첫 번째 값과 마지막 값을 확인하세요
- 모든 값을 확인하세요
- 값의 무작위 하위 집합 확인
요즘에는 Num(<를 사용하여 검사를 수행합니다. 열의 데이터 유형을 변경합니다. "최상의" 매치를 확인하기 위해 InFormat()을 사용할 수도 있다고 생각합니다(Num()보다 더 나을 수도 있음).
Re: JSON Panda Split에 대한 열 데이터 유형 설정네, 그렇게 됩니다. 고맙습니다, Jarmo.
Re: JSON Panda Split에 대한 열 데이터 유형 설정참고용 JSL 구현은 다음과 같습니다.
rows_to_check_for_conversion = 100;
// Get column names.
dt_cols = dt << Get Column Names();
// Change data types.
For Each( {c, i}, dt_cols,
non_missing_rows = dt << Get Rows Where( !Is Missing( As Column( dt, c ) ) );
row_check = 0;
convert_to_number = 1;
While( row_check < rows_to_check_for_conversion & row_check < N Items( non_missing_rows ) & convert_to_number == 1,
row_check = row_check + 1;
r = non_missing_rows[row_check];
val = Num( dt:c[r] );
If( Is Missing( val ),
convert_to_number = 0
);
);
If( convert_to_number == 1,
As Column( dt, c ) << Data Type( "Numeric" );
As Column( dt, c ) << Modeling Type( "Continuous" );
);
);Re: JSON Panda Split에 대한 열 데이터 유형 설정좋을 만한 몇 가지 변경 사항: As Column() 대신 Column()을 사용하고 Num() 호출에 << Restrict를 추가하는 것이 원하는 작업인지 확인하세요(저는 이와 비슷한 방식으로 작업했습니다).