수식에 사용된 열을 추출하는 방법이 있나요?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요 여러분-
단계별 분석에서 선택한 열을 추출한 다음 각 선택 항목의 일변량 분포를 구축하는 새 버튼을 내 플랫폼에 만들려고 합니다. 제한 사항은 선택한 열 추출 및 배포 작성이 목록의 특정 열 이름에 유지된다는 것입니다. 열에 들어가서 수식인지 확인하고, 사용된 열을 추출한 다음, 단계적으로 선택한 열 목록에 추가 열을 포함시키고 싶습니다.
더 구체적으로 말하면 수식에서 열을 추출할 수 있나요? ":" 부분을 사용하면 복잡한 이름을 캡처할 수 있는 것처럼 보이지 않으며 색인은 단지 전체 수식을 잡는 것만을 참조합니다.
예를 들어 목록에 "볼륨" 열이 있는 경우를 들 수 있습니다.
{:용량}
열("볼륨")<<수식 가져오기; 보고:
:높이 * :너비 * :길이
다음 목록으로 마무리하고 싶습니다.
{:높이, :폭, :길이, :부피}
이는 간단한 수식 예입니다. 단순하거나 복잡한 이름을 가진 다른 버전/유형이 있을 수 있습니다.
감사해요,
앤드류 파커
Re: 수식에 사용된 열을 추출하는 방법이 있나요?제 생각에는 위의 Craige@JMP 항목을 합리적으로 바꿔 표현한 것 같아요, Andrew.
그러나 바로 위의 예에서는 목록에 고유한 항목만 유지해야 함을 보여줍니다(따라서 'W'는 한 번만 발생함). 이 논리를 Craige의 함수에 넣을 수도 있고 그의 함수가 반환하는 목록을 조작할 수도 있습니다.
Re: 수식에 사용된 열을 추출하는 방법이 있나요?감사해요! 이것이 내 프로그램을 완료하는 데 꼭 필요한 것 같습니다.
수식에 대한 이해를 확인하기 위해 수식 작성기를 사용하여 무슨 일이 일어나고 있는지 시각화하면 다음과 같습니다.

메인 박스를 보고 '공식이 무엇인가요?'라고 묻습니다. 그리고 '얼마나 많은 조각이 필요합니까?' 각 조각을 살펴보고 내부에 잎만 있는 상자에 도달할 때까지 질문을 반복하고 잎이 열 이름인 문자열을 반환합니다. 가장 작은 리프 상자에 도달하면 뒤로 물러서서 첫 번째 리프 상자에 대한 경로에서 확인하지 않은 노드/리프를 살펴보기 시작합니다.
설명이 아주 훌륭하지는 않지만, 맞는 것 같나요?
Re: 수식에 사용된 열을 추출하는 방법이 있나요?좋은 코드! 많은 감사를 드립니다.
Re: 수식에 사용된 열을 추출하는 방법이 있나요?Ian - 재귀 버전 여기
Re: 수식에 사용된 열을 추출하는 방법이 있나요?이를 수행하는 가장 좋은 방법은 수식 표현식을 트리로 재귀적으로 토큰화한 다음 리프 노드에서 열 참조를 검색하는 것입니다. 이는 제공된 표현식 조작 프리미티브를 사용하여 JSL에서 완벽하게 가능합니다(JMP 스크립팅 가이드의 '목록 및 표현식' 섹션을 참조하고 'Head()', 'NArg()' 및 'Arg()' 함수에 주의) ). 하지만 이 방법을 코딩하려면 컴퓨터 과학 책을 찾아봐야 할 수도 있습니다.
또는 아래 코드는 프로파일러를 사용하여 JMP가 작업을 수행하도록 하는 복잡한 방법을 제공합니다.
이름DefaultTo여기 ( 1 ) ;
dt = 새 테이블 ( "수식에서 열 가져오기" ,
행 추가 ( 20 ) ,
새 열 ( "시간" ,
숫자 ,
"마디 없는" ,
체재 ( "최상의" , 12 ) ,
공식 ( 무작위 유니폼 () )
) ,
새 열 ( "여" ,
숫자 ,
"마디 없는" ,
체재 ( "최상의" , 12 ) ,
공식 ( 무작위 유니폼 () )
) ,
새 열 ( "디" ,
숫자 ,
"마디 없는" ,
체재 ( "최상의" , 12 ) ,
공식 ( 무작위 유니폼 () )
) ,
새 열 ( "V" ,
숫자 ,
"마디 없는" ,
체재 ( "최상의" , 12 ) ,
공식 ( ( : 여 * : 시간 * : 디 ) / 10 )
)
) ;
// 보이지 않게 프로파일러 실행
피 = dt << 프로파일러 ( 와이 ( : V ) , 확장하다 , 보이지 않는 ) ;
// 그리드 테이블을 가져옵니다.
피 << 출력 그리드 테이블 ;
// 그리드 테이블의 열을 목록으로 가져옵니다.
열 = 데이터테이블 ( 엔테이블 ()) << getColumnNames ( "끈" ) ;
// 정리
피 << 창 닫기 ;
닫다 ( 데이터테이블 ( 엔테이블 ()) , 저장 안 함 ) ;