<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />이것은 JMP 블로그의이 게시물의 버전과 매우 흡사합니다 ... 거기에 놓친 경우를 대비해 교차 게시하십시오!
이전의 블로그 게시물 , 나는 JMP Discovery Summit 2014 e-poster 제목을 " JMP를 이용한 개인 다이어트 및 피트니스 데이터 분석 " QS (quantified self) 분석 프로젝트에 관심을 보였습니다. 포스터 프로젝트의 경우 웹 기반 Activity Manager 소프트웨어에서 두 가지 유형의 데이터 파일을 BodyMedia® JMP에서 추가 분석 및 시각화를 위해 데이터를 가져오고, 형식을 지정하고 정리하는 JSL (JMP Scripting Language) 스크립트를 작성했습니다. Cary의 컨퍼런스에서 더 많이 듣기 위해 나와 함께 할 수 있었으면 좋겠지 만, 그렇지 않다면 내 전자 포스터의 PDF Discovery Summit 2014 섹션을 참조하십시오.
오늘 저는 JSL을 사용하여 활동 및 칼로리 요약 정보가 포함 된 일련의 다중 워크 시트 Excel 파일을 가져 와서 결합하는 방법을 설명합니다. 또한 Activity Manager 소프트웨어는 다음 번 블로그 게시물에서 다룰 PDF Food Log 파일을 내 보냅니다. 그건 그렇고, 나는 추가 기능 자신의 BodyMedia® 활동 요약 및 식품 로그 파일을 JMP로 가져 오는 데 사용할 수있는 JMP 파일 교환에 연결하십시오. 또한 Chrome 확장 프로그램을 사용하여 인기있는 MyFitnessPal 음식 로깅 웹 사이트에서 다운로드 할 수있는 CSV 파일을 가져 오는 보너스 추가 기능이 포함되어 있습니다.
이 사용자 커뮤니티 블로그 게시물의 경우이 블로그의 공개 버전에 표시되지 않은 추가 기능 테스트에 대한 참고 사항을 추가하려고합니다. 필자는 많은 스크립트를 작성했지만 이것이 내 스크립트 상단에 사용자 인터페이스를 설치하고 다른 사용자가 추가 기능을 사용할 때 발생할 수있는 버그에 대해 걱정하는 나의 첫 경험이었습니다. 필자는이 과정에서 두 명의 JMP 테스터와 스크립팅 전문가 Melanie Drake와 Audrey Shull에 크게 의존했습니다. Melanie는 내 경우에 맞게 간단한 대화를위한 코드를 공유했습니다. Audrey는 초기 추가 기능 테스트를 수행했으며 사용자 입력을보다 잘 검증하고 스크립트에 오류 검사 옵션을 추가 할 수 있도록 스크립트를 여러 조각으로 나누어 제안했습니다. 여기에는 디렉토리 및 파일 존재에 대한 유효성 검사와 사용자가 기존 파일을 덮어 쓸지 여부를 확인하는 검사가 포함되었습니다.
플로리다에있는 가족 휴가에서 돌아 오는 길의 자동차에서 나는 항상 존재하는 노트북에서 대화와 스크립트에 대한 다음 테스트 계획을 세웠다. 나중에 컴퓨터 앞에 다시있을 때 추가 기능 대화 상자의 스크린 샷과 사용자가 취할 수있는 가능한 작업 중 일부를 포함하는 다음 PowerPoint를 만들었습니다. 테스트에서 버그가 발생한 위치와 그 위치 (빨간색 상자)를 확인하는 것이 대단히 도움이된다는 사실을 발견했습니다. 내 대본에 대한 수정으로 문제를 해결할 때이를 표시하는 것은 만족 스러웠습니다. 아주 간단한 애드 인은 테스트 할 수있는 많은 수의 경로를 가지고 있으며, 복잡한 소프트웨어를 개발하고 테스트하는 것이 얼마나 어려운지 다시 한번 고민합니다. 이 연습을 통해 JMP 개발자와 테스터가 매일하는 모든 작업에 대해 더욱 감사하게 생각합니다.

이전에 내가 추가 기능을 만들었습니다. 8 월 초, 디스커버리 포스터를 준비하면서 12/20/2010에서 7/28/14까지의 시간대에 걸쳐 약 50 개의 활동 요약 및 50 개의 식량 로그 파일을 수출했습니다. BodyMedia® Activity Summary 데이터는 여섯 가지 워크 시트가 포함 된 Excel 통합 문서에 저장되지만 처음 다섯 가지 (요약, 활동, 식사, 수면 및 무게)에서 데이터를 가져 오는 데 관심이있었습니다. 다른 워크 시트의 내용에 대한 자세한 내용은에서 볼 수 있습니다. 내 전자 포스터 .

대부분의 활동 요약 Excel 파일에는 4 주간의 데이터가 포함되어 있지만 일부는 적은 주를 포함했습니다. 다섯 번째 탭 (무게)의 행 수가 다양했지만 모든 파일의 행 헤더에는 열 머리글이 있고 처음에는 네 개의 탭에 28 개의 데이터 행이있었습니다. 2013 년 전에 수동으로 Activity Manager에 무게 측정을 입력했습니다. 2013 년 1 월에 나는 Withings 스마트 바디 애널라이저 이 시스템은 자체 웹 기반 소프트웨어에 무게 측정을 무선으로 업로드하고 활동 관리자와의 제 3 자 통합을 통해 자동으로 공유합니다.
인터랙티브 방식으로 데이터 파일을 두 번 가져온 지 약 1 년 후에 가져 오기 프로세스를 스크립팅하기로 결정했습니다. 인터랙티브 임포트는 더 많은 파일과 워크 시트를 가지고 있기 때문에 두 번째로 많은 시간이 걸렸다. 매일 새로운 데이터를 축적하기 때문에 시간이 지남에 따라 파일 수가 증가합니다. 두 번째 가져 오기 후에 필자는 필자의 열을 포맷하고 결합 된 데이터 테이블에 수식을 추가하여 첫 번째 가져 오기에서 테이블과 비교하고 몇 가지 중요한 단계를 잊어 버렸음을 알게되었습니다.
내가 놓친 단계를 완료하기 위해 다시 추적하는 동안 스크립팅으로 모든 파일을 훨씬 간단하고 신속하게 재 처리 할 수있는 방법을 고려하기 시작했습니다. 가져 오기 프로세스가 쉬워지면 새로운 데이터를 훨씬 더 자주 보게 될 것입니다. 다행히도, 나 같은 초보자 스크립터조차도 JSL을 작성하여 내 파일을 가져 와서 결합 할 수 있음을 발견했습니다. 원본 문서 (대화식 가져 오기 중에 JMP 데이터 테이블에 자동으로 추가됨) 및 온라인 설명서 및 토론 포럼의 JSL 예제로 시작했습니다. 내가 텍스트 파일 가져 오기 예제 후에 패턴 화 된 전략을 사용하여 모든 파일을 반복했다. SESUG JMP 개발자 Michael Hecht가 작성한 논문. Michael은 JMP에서 오랫동안 활동해온 전문가로서 모든 언어로 된 고품질의 우아한 코드로 유명합니다. 그렇다면 마스터에서 빌려 보는 것은 어떨까요?
내 데이터를 하나의 통합 된 테이블로 통합하는 과정에서 약간의 장애를 경험했습니다. 내가 가져 오기 전에 처리해야했던 것은 수면 탭의 날짜 열에 다른 모든 워크 시트와 마찬가지로 하루가 아닌 하루 종일 범위가 포함되어있어 전처리 단계없이 직접 병합하지 못하게했습니다. 예를 들어 2012 년 12 월 20 일 ~ 2012 년 12 월 21 일 및 2012 년 12 월 21 일의 가치는 12/20/14에 시작하여 12/21/14의 아침에 끝난 수면 밤을 나타냅니다. JMP 수식 편집기와 JMP Word 문자 패턴 기능을 사용하여 두 번째 요일을 파싱했습니다.

수식을 대화 형으로 작성한 후 스크립트에 코드를 추가하여 JSL의 도움으로 이러한 단계를 쉽게 반복 할 수있게했습니다. 스크립트 가져 오기 명령. 명령 실행 MyColName << 스크립트 가져 오기; 휴면 탭의 날짜 열에는 JSL의 키 스 니펫이 인쇄되어 JMP 로그에 기록되어이 스크립트를이 단계를 자동화하는 데 추가했습니다. 마지막 테이블에서 수면 열에 표시된 hr : m 값은 그날 아침 각성하기 전에 얼마나 잤는지 나타 냈습니다.
입력 한 파일에 최종 JMP 테이블에 포함시키지 않을 추가 정보가 있습니다. 칼로리 합계, 평균 및 목표는 모든 워크 시트 하단에 요약되어 있습니다 (위 표의 그림에서 36-39 행). 이 요약, 열 머리글 위의 정보 행 및 빈 행을 필터링하기 위해 스크립트에 단계를 추가했습니다. 전체적으로, Discovery Summit 포스터에 사용 된 활동 데이터 테이블의 버전에는 섭취하고 태운 칼로리, 활동 측정, 수면 및 체중 측정에 대한 1,316 행의 일일 데이터가 포함되어 있습니다.
내 데이터 테이블은 아직 분석 할 준비가되지 않았습니다. 가져 오기시 올바르게 형식이 지정되지 않은 기간 및 백분율이 포함 된 표의 숫자 열입니다. 형식, 누락 된 값 코드 및 모델링 유형을 열 속성으로 대화식으로 추가했습니다. 내 날짜 열에 변형 열 기능을 사용하여 연도, 월, 주 및 일과 같은 새로운 날짜 시간 변수를 테이블에 신속하게 추가 한 다음 스크립트에 추가하여 해당 단계를 자동화했습니다. 또한 주어진 칼로리 적자 / 초과분을 나타 내기 위해 새로운 수식 열을 표에 추가했습니다 (소비 된 칼로리 소비량 - 칼로리 소비량).
BodyMedia® Activity Summary 파일을 Excel 형식으로 저장 한 경우 my 추가 기능 File Exchange에서 자신의 파일을 포인트 앤 클릭 (point-and-click)하여 JMP로 가져올 수 있습니다. 이 추가 기능은 방금 설명한 활동 요약 파일 유형, 텍스트로 저장된 BodyMedia® 음식 로그 파일 및 Chrome 확장 기능을 사용하여 자주 사용되는 (무료) MyFitnessPal에서 내보낼 수있는 음식 로그 텍스트 파일을 지원합니다.
스크립팅 제안 및 애드온 테스트를 위해 JMP 테스트 매니저 인 Audrey Shull과 기술 저자 인 Melanie Drake에게 감사드립니다! JSL을 사용하여 BodyMedia® 음식 로그 파일을 어떻게 자동으로 가져 왔는지 설명 할 블로그 게시물을 기다리고 있습니다.