실행할 수 없는 오류가 발생했습니다. 도움을 주실 수 있나요?
// 날짜를 dd/mm/yyyy로 다시 포맷하는 함수
colName = Column Dialog( "날짜 열 선택" );
reformatDateColumn = 함수({dt, colName},
dt = 현재 DataTable();If( Column( dt, colName ) == 비어 있음(),
Throw( "선택한 열은 현재 데이터 테이블에 존재하지 않습니다." );
);
// 날짜를 식별하고 형식을 다시 지정하는 함수
formatDate = 함수({날짜},
// 다른 날짜 형식을 확인하고 dd/mm/yyyy로 변환합니다.
If( 포함( 날짜, "/" ),
// 날짜가 dd/mm/yyyy 또는 mm/dd/yyyy 형식인지 확인합니다.
If( Substr( 날짜, 3, 1 ) == "/",
// dd/mm/yyyy 형식을 가정합니다.
날짜,
// mm/dd/yyyy 형식을 가정하고 dd/mm/yyyy로 변환합니다.
Concat( Word( 2, 날짜, "/" ), "/", Word( 1, 날짜, "/" ), "/", Word( 3, 날짜, "/" ) )
),
// mmddyyyy, ddmmyyyy, yyyymmdd 또는 yyyyddmm 형식을 처리합니다.
If( 길이( 날짜 ) == 8,
// 처음 두 자리가 유효한 월 또는 일을 구성하는지 확인합니다.
If( Num( Substr( 날짜, 1, 2 ) ) > 12,
// ddmmyyyy 형식을 가정합니다.
Concat( Substr( 날짜, 1, 2 ), "/", Substr( 날짜, 3, 2 ), "/", Substr( 날짜, 5, 4 ) ),
// mmddyyyy 형식을 가정하고 dd/mm/yyyy로 변환합니다.
Concat( Substr( 날짜, 3, 2 ), "/", Substr( 날짜, 1, 2 ), "/", Substr( 날짜, 5, 4 ) )
),
If( 길이( 날짜 ) == 8,
If( Num( Substr( date, 1, 4 ) ) > 999, // 처음 4자리가 유효한 연도인지 확인합니다.
// 다음 두 자리가 유효한 월 또는 일을 구성하는지 확인합니다.
If( Num( Substr( 날짜, 5, 2 ) ) > 12,
// yyyyddmm 형식을 가정합니다.
Concat( Substr( 날짜, 7, 2 ), "/", Substr( 날짜, 5, 2 ), "/", Substr( 날짜, 1, 4 ) ),
// yyyymmdd 형식을 가정하고 dd/mm/yyyy로 변환합니다.
Concat( Substr( 날짜, 7, 2 ), "/", Substr( 날짜, 5, 2 ), "/", Substr( 날짜, 1, 4 ) )
),
// 유효한 연도나 형식이 아닌 경우 원래 날짜를 반환합니다.
날짜
),
// 날짜 길이가 8이 아닌 경우 원래 날짜를 반환합니다(잘못된 형식).
날짜
)
)
)
);
//함수를 트리거하는 버튼이 있는 UI를 만듭니다.
새 창("데이터 처리 도구",
V 목록 상자(
// 날짜 열의 형식을 다시 지정하는 버튼
버튼 상자("날짜 열 형식 변경",
// 날짜 열을 선택하기 위해 대화상자를 엽니다.
colName = Column Dialog( "날짜 열 선택" );
// 선택한 날짜 열의 형식을 다시 지정하는 함수를 호출합니다.
reformatDateColumn( 현재 데이터 테이블(), colName );
)
)
);
코드(코드는 LLM이 생성된 것처럼 보임) 대신 무엇을 하려는지 설명해 주시겠습니까?
날짜처럼 보이는 문자 열이 있는 데이터 테이블이 있다고 가정합니다. 날짜 형식이 혼합되어 있을 수 있나요? 그리고 이를 숫자 형식으로 변환하는 UI를 원하십니까? JMP의 형식 패턴을 사용하면 이 작업이 가능할 수도 있지만 데이터의 예가 있으면 도움이 될 것입니다.
다음은 좀 더 읽기 쉬운 형식의 원본 스크립트입니다(스크립트 형식 지정 외에는 어떠한 변경도 하지 않았기를 바랍니다).
더보기...
colName = Column Dialog("Select Date Column");
reformatDateColumn = Function({dt, colName},
dt = Current Data Table();
If(Column(dt, colName) == Empty(),
Throw("The selected column does not exist in the current data table.")
);
);
formatDate = Function({date},
If(Contains(date, "/"),
If(Substr(date, 3, 1) == "/",
date,
// Assume mm/dd/yyyy format and convert to dd/mm/yyyy
Concat(Word(2, date, "/"), "/", Word(1, date, "/"), "/", Word(3, date, "/"))
)
,
// Handle mmddyyyy, ddmmyyyy, yyyymmdd, or yyyyddmm format
If(Length(date) == 8,
// Check if first two digits form a valid month or day
If(Num(Substr(date, 1, 2)) > 12,
// Assume ddmmyyyy format
Concat(Substr(date, 1, 2), "/", Substr(date, 3, 2), "/", Substr(date, 5, 4))
,
// Assume mmddyyyy format and convert to dd/mm/yyyy
Concat(Substr(date, 3, 2), "/", Substr(date, 1, 2), "/", Substr(date, 5, 4))
)
,
If(Length(date) == 8,
// Check if first 4 digits form a valid year
If(Num(Substr(date, 1, 4)) > 999,
// Check if the next two digits form a valid month or day
If(Num(Substr(date, 5, 2)) > 12,
// Assume yyyyddmm format
Concat(Substr(date, 7, 2), "/", Substr(date, 5, 2), "/", Substr(date, 1, 4))
,
// Assume yyyymmdd format and convert to dd/mm/yyyy
Concat(Substr(date, 7, 2), "/", Substr(date, 5, 2), "/", Substr(date, 1, 4))
)
,
// If not a valid year or format, return the original date
date
)
,
// If the date length is not 8, return the original date (invalid format)
date
)
)
)
);
New Window("Data Processing Tools",
V List Box(
Button Box("Reformat Date Column",
// Open a dialog to select the date column
colName = Column Dialog("Select Date Column");
reformatDateColumn(Current Data Table(), colName);
)
)
);