こんにちは、私はJmpの新人で、スクリプトを使用してデータセットを再配置しようとしています。現在、私は次のようなデータセットを持っています:
| ID | ラボ | ラボ値 | ラボの日時 | 投薬 |
| あ | HGB | 12 | 2016/10/05 6:00 | チレノール |
| あ | Cr | 1 | 2016/10/05 6:00 | チレノール |
| あ | K | 4 | 2016/10/05 6:00 | チレノール |
| B | K | 3.7 | 02/06/11 4:00 | アスピリン |
| B | K | 4.5 | 02/11/06 7:00 AM | アスピリン |
| B | Cr | 1.2 | 02/11/06 7:00 AM | アスピリン |
| B | HGB | 14 | 02/11/06 7:00 AM | アスピリン |
| C | Cr | 1.5 | 2009年1月15日午前6時30分 | ビタミンD |
| C | HGB | 12 | 2009年1月15日午前6時30分 | ビタミンD |
| C | HGB | 9 | 2009年1月15日、午前9時30分 | ビタミンD |
各IDを、個々のラボごとに列を含む単一の行にする必要があります。どのIDでも、異なるラボの重複がある可能性がありますが、各ラボのすべての値を保持し、それらを個別の列にしたいと考えています。Hgb1、Hgb2になるような変数を組み合わせて作成できるように、IDとラボで並べ替えた後にカウント変数を作成することを考えていましたが、その方法がわかりません。絵を描いているので移調の仕方もわかりません。
| ID | Hgb1 | ラボの日時 | Hgb2 | ラボの日時 | Cr1 | ラボの日時 | Cr2 | ラボの日時 | K1 | ラボの日時 | K2 | ラボの日時 | 投薬 |
| あ | 12 | 2016/10/05 6:00 | | | 1 | 2016/10/05 6:00 | | | 4 | 2016/10/05 6:00 | | | チレノール |
| B | | | | | | 02/11/06 7:00 AM | | | 3.7 | 02/06/11 4:00 | 4.5 | 02/11/06 7:00 AM | アスピリン |
何か助けていただければ幸いです。
ありがとうございました!!!
これにはたくさんの考え方と少しのスクリプトが必要でしたが、少なくとも必要なものから良いスタートを切ることができると思います。 あなたが本当に薬の値をどうしたいのかわからなかったので、それらを各ラボのグループに追加しました。 また、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変数を式ではなくすると、これは完全に機能しました!