열 제목에서 문자열 추출 및 다른 항목 추가안녕하세요,
저는 엑셀에서 결과를 JMP로 가져오는 데 사용하는 가져오기 스크립트가 있습니다. 템플릿 엑셀은 많은 사람들이 사용하고 있으며 편집이 금지되어 있습니다. 엑셀에는 "Results - XXX"라는 두 개의 결과 열이 있는데, 여기서 XXX는 각 파일에서 변경되는 내용을 연구하는 엑셀 매크로를 사용하여 대체합니다. 또한 JMP Result 1과 JMP Result 2라는 열이 있는데, 이는 결과 열과 동일하고 숫자 형식입니다. JMP import로 사용하는데, 엑셀에서 과학적 숫자를 가져올 수 없습니다. JMP에서 엑셀을 열면 아래 이미지와 비슷한 것을 볼 수 있습니다.

"Results -" 다음에 오는 단어를 열 제목에서 추출하고 JMP Result Column 제목을 대체하는 스크립트를 작성하려고 하는데, 올바른 제목을 대체하는지 확인하고 있습니다. 그래서 결과는 다음과 같습니다.

JMP에서 이것이 가능한지 잘 모르겠지만, 도움이 된다면 정말 감사하겠습니다. 열 제목의 문자열 끝을 추출하는 것부터 어떻게 시작해야 할지 모르겠고, 나중 단계는 더더욱 모르겠습니다. 미리 감사드립니다.
자동화 및 스크립팅Re: 열 제목에서 문자열 추출 및 다른 항목 추가여기 순수한 JSL 옵션이 있습니다. 여러분의 데이터에 따라 꽤 쉽게 깨질 수 있습니다. 제가 꽤 많은 가정을 해야 했기 때문입니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("Results - DNA", Numeric, "Continuous", Format("Best", 12), Set Values([.]), ),
New Column("Results - Protein", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("JMP Result 1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("JMP Result 2", Numeric, "Continuous", Format("Best", 12), Set Values([.]))
);
// Assume that you extract last word from result columns
// and results are first then jmp columns and there is equal amount
result_columns = {};
jmp_columns = {};
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
If(Starts With(colname, "Results - "),
Insert into(result_columns, Word(-1, colname, " "));
,
Insert Into(jmp_columns, colname)
)
);
For Each({{rescol, jmpcol}}, Across(result_columns, jmp_columns),
Column(dt, jmpcol) << Set Name(rescol);
);
Write();Re: 열 제목에서 문자열 추출 및 다른 항목 추가안녕,
테스트 데이터 테이블을 첨부했습니다. 이 스크립트를 시도해 보세요:
dt = current data table();
for each({name,i}, dt << get column names(string),
if (contains(name, "Results -"),
new_name_string = word(2, name, "- ");
column(dt,i) << set name(substitute(name, "Results -", "Results_Excel -" ));
for each({name2,p}, dt << get column names(string),
if (contains(name2, "JMP Result"),
column(dt,p) << set name(new_name_string);
Break();
,
);
);
,
);
);
이렇게 하면 당신이 목표로 하는 것을 할 수 있을 것입니다. 그렇지 않다면 알려주세요.
편집: 방금 Jarmo의 훌륭한 솔루션을 보았습니다. "excel" 열의 이름을 변경하고 싶지 않다면 이 솔루션을 선택할 수 있습니다.
건배,
조나스
Re: 열 제목에서 문자열 추출 및 다른 항목 추가또한 스크립팅이 아닌 옵션도 떠올랐습니다.
쌓인 테이블 만들기

레이블에서 마지막 단어 열 만들기

이제 매핑 테이블이 있습니다

원래 테이블로 돌아가서 열 이름을 다시 코딩하세요.

테이블에 매핑 적용을 사용합니다...


그리고 재코딩을 클릭하세요


JMP가 스크립트에서 매핑 값을 직접 사용하기 때문에 이를 위한 적절한 스크립트를 자동으로 생성할 수 없다는 점이 너무 안타깝습니다. 따라서 스크립트에 "전체 매핑 테이블"을 어떻게든 생성하여 채울 수 없다면 수동 프로세스가 필요할 수 있습니다.
// Recode column names
Local({dt = Data Table("Untitled 2"), names},
names = Recode(
dt << Get Column Names(String),
{Map Value(
_rcOrig,
{"JMP Result 1", "DNA", "JMP Result 2", "Protein"},
Unmatched(_rcNow)
)}
);
For Each({name, i}, names, Column(dt, i) << Set Name(name));
);