연관 배열 및 루프를 사용하여 여러 열의 값을 다시 코딩합니다.안녕하세요, JMP 사용자 커뮤니티 여러분,
매우 자주 값을 다시 코딩해야 하고 매핑 키가 있는 파일(첨부됨, help_med_code.jmp)을 사용하는 것을 좋아합니다.
이 매핑 데이터에서 연관 배열을 만들고 내 데이터 세트(help_data.jmp)의 값을 다시 코딩하기 위해 각 열의 값을 다시 코딩합니다.
때로는 열이 많고 루프를 사용하는 것이 좋습니다.
그러나 내 스크립트 for 루프가 작동하지 않습니다(첨부됨, help2.jsl).
루프에서 연관 배열을 사용하도록 도와주세요. 재코딩에 대한 다른 제안도 대단히 감사하겠습니다.
어리석은 오타를 만들지 않았으며 여기에 이미 답변이 있는 경우 질문을 반복하지 않았으면 합니다.
여러분 모두에게 최선을 다합니다.
발렌티나
JMP® 16.2.0(570548)
마이크로소프트 윈도우 10 엔터프라이즈 64비트(10.0.19044.0)
자동화 및 스크립팅데이터 혼합 및 정리Re: 연관 배열 및 루프를 사용하여 여러 열의 값을 다시 코딩합니다.열 이름에 대한 매핑을 어떻게 구축합니까? 원래 열은 항상 같은 형식입니까? 나는 내 예제 스크립트에서 그것들이 있다고 가정하므로 그것들은 반복될 수 있습니다.
Names Default To Here(1);
// this is original datatable
dt_data = Open("help_data.jmp");
// this is mapping file
dt_mapping = Open("help_med_code.jmp");
//The associative array
aa_mapping = Associative Array(:number, :med);
aa_mapping << Set Default Value("MISSING MAPPING INFO");
// build column name mapping
aa_colnames = Associative Array();
For Each({col_name}, dt_data << Get Column Names("Character", "String"),
If(Starts With(col_name, "med_"),
aa_colnames[col_name] = Substitute(col_name, "med_m", "drugname_");
)
);
For Each({{orig_col, new_col}}, aa_colnames,
dt_data << New Column(new_col, Character, Nominal, << Set Each Value(
aa_mapping[Column(dt_data, orig_col)[Row()]]
));
);Re: 연관 배열 및 루프를 사용하여 여러 열의 값을 다시 코딩합니다.감사합니다!
데이터에 대한 레이블/사전과 함께 데이터를 얻었습니다.
스크립트가 작동해서 기쁩니다.