안녕하세요, Jmp를 처음 사용하고 스크립트를 사용하여 데이터 세트를 재 배열하려고합니다. 현재 다음과 같은 데이터 세트가 있습니다.
| 신분증 | 랩 | 실험실 가치 | 실험실 날짜 및 시간 | 약물 |
| ㅏ | Hgb | 12 | 10/5/16 6:00 오전 | 티레 놀 |
| ㅏ | Cr | 1 | 10/5/16 6:00 오전 | 티레 놀 |
| ㅏ | 케이 | 4 | 10/5/16 6:00 오전 | 티레 놀 |
| 비 | 케이 | 3.7 | 02/6/02 오전 4:00 | 아스피린 |
| 비 | 케이 | 4.5 | 02/6/02 오전 7:00 | 아스피린 |
| 비 | Cr | 1.2 | 02/6/02 오전 7:00 | 아스피린 |
| 비 | Hgb | 14 | 02/6/02 오전 7:00 | 아스피린 |
| 씨 | Cr | 1.5 | 1/15/09 6:30 오전 | 비타민 D |
| 씨 | Hgb | 12 | 1/15/09 6:30 오전 | 비타민 D |
| 씨 | Hgb | 9 | 1/15/09 9:30 오전 | 비타민 D |
각 ID가 각 실험실마다 열이있는 단일 행이 되길 원합니다. 모든 ID에는 다른 랩이 중복 될 수 있지만 각 랩의 모든 값을 유지하고 별도의 열로 만들고 싶습니다. ID와 실험실별로 정렬 한 후 카운트 변수를 만들어서 Hgb1, Hgb2가 될 변수를 결합하고 만들 수 있었지만 어떻게 해야할지 모르겠습니다. 또한 사진을 찍을 때 조옮김 방법을 모릅니다.
| 신분증 | Hgb1 | 실험실 날짜 및 시간 | Hgb2 | 실험실 날짜 및 시간 | Cr1 | 실험실 날짜 및 시간 | Cr2 | 실험실 날짜 및 시간 | K1 | 실험실 날짜 및 시간 | K2 | 실험실 날짜 및 시간 | 약물 |
| ㅏ | 12 | 10/5/16 6:00 오전 | | | 1 | 10/5/16 6:00 오전 | | | 4 | 10/5/16 6:00 오전 | | | 티레 놀 |
| 비 | | | | | | 02/6/02 오전 7:00 | | | 3.7 | 02/6/02 오전 4:00 | 4.5 | 02/6/02 오전 7:00 | 아스피린 |
도움을 주시면 감사하겠습니다.
감사합니다!!!
이것은 많은 생각과 약간의 스크립팅이 필요했지만 적어도 당신이 필요로하는 것을 시작하게 될 것이라고 생각합니다. 나는 당신이 실제로 약물 값으로 무엇을하고 싶었는지 확신하지 못했기 때문에 각 실험실 그룹에 추가했습니다 .... 당신은 그것을 바꿀 수 있습니다. 또한 JMP는 이름이 같은 열을 좋아하지 않으므로 고유 이름으로 이름을 남겼습니다.

names default to here(1);
dt=current data table();
// Add a rowNum column to capture the original data table order
dt << New Column("rowNum", formula(Row()));
dt:rowNum << delete formula;
// Order the data so that a count column can be calculated
dt << sort(by(:Lab, :ID), order(ascending,ascending),replace table(1));
// Add the count value, to count the number of duplicate labs for each ID
dt << new column("count", formula(If( Row() == 1, mycount = 1 );
If( Lag( :ID ) == :ID & Lag( :Lab ) == :Lab,
mycount++,
mycount = 1
);
mycount;));
// Split the data into columns
dtSplit = dt << Split(
Split By( :Lab, :count ),
Split( :Lab Value, :Lab date and time, :Medication ),
Group( :ID ),
Remaining Columns( Drop All ),
Sort by Column Property
);
// Clean up the original data table
dt << sort( by(:rowNum),order(ascending), replace table(1));
dt << delete columns({"count", "rowNum"});
// Order the columns
// Get the list of columns that start with "Lab Value", which
// will be used to order the columns based on them
labValueList = {};
for(i=1,i<=ncols(dtSplit),i++,
If(uppercase(left(column(i)<<GET name=""></GET>정말 고맙습니다! 일단 ID 변수를 표현식이 아닌 것으로 만들면 완벽하게 작동했습니다!