列を作成する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />私はJMPの初心者なので、助けが必要です。 私は入院中の患者を20年間にわたって追跡する大規模なデータベースを持っています。 ある患者の「365死亡率」欄に「*」が表示されている場合、その患者が表示されるたびに「死亡」欄に1を入力します。 下記参照。
患者
| 365死亡 | 死 |
|---|
| 1 |
| 1 |
| 1 | * | 1 |
| 2 |
|
|
| 2 |
|
|
| 2 |
|
|
| 3 |
| 1 |
| 3 |
| 1 |
| 3 | * | 1 |
| 4 |
|
|
| 4 |
|
|
| 5 |
| 1 |
| 5 | * | 1 |
列を作成するご協力ありがとうございます。
再:列を作成するそしてもう一つのアプローチ:
dtmort =データテーブル(「死亡率」)。
dtby = dtmort <<要約(グループ(:名前( "365死亡率")、:患者)、元のデータテーブルへのリンク(0));
dtby << select where(:name( "365 Mortality")!= "*");
dtby <<行を削除。
dtby <<新しい列( "Death1"、数値、連続、書式( "Best"、9)、各値を設定します(1))。
dtby <<列を削除する( "365死亡")。
dtmort << Update(with(Data Table(dtby))、Match Columns(:Patient =:Patient)、Updateテーブルからの列の追加(:Death1));
close(dtby、nosave);
列を作成するこれを行う別の方法があります。このアプローチは列式に適用できます(このスクリプトを実行するか、Formula()内のコードを新しい列式プロパティに貼り付けます)。
dt << 新しいコラム ( "死" 、
式 ( もし ( 連想配列 ( リストとして ( : 患者 << 値を取得 ) 、 : 名 ( 「365死亡」 ) << 値を取得 )[ : 患者 []] == "*" 、 1 ) )
) ;
あるいは、動的な式が必要ない場合やデータベースが非常に大きい場合(複雑な式では処理が遅くなる可能性がある場合)、jslスクリプトで実行できます。
dt << 現在のデータ表 () ;
コル = ( dt << 新しいコラム ( "死" )) ;
各行について (
もし ( 連想配列 ( リストとして ( : 患者 << 値を取得 ) 、カラム ( 「365死亡」 ) << 値を取得 )[ : 患者 []] == "*" 、
コル [] = 1
)
) ;
列を作成する私はそれより少しトリッキーだと思います。 患者行に*がある場合、jstewartはDeath列に1が必要です。 これを行う1つの方法は次のとおりです。
dt = データ表 ( "死亡" ) ;
dt << 新しいコラム ( "死1" 、数値 、連続的 、フォーマット ( "ベスト" 、 9 )) ;
dt1 = ( dtab = dt << 集計する (
コントロールパネルを表示 ( 0 ) 、
テーブルを追加 ( 行テーブル ( グループ化列 ( : 患者 、 : 名 ( 「365死亡」 ) ) ) )
)) << データテーブルにする ;
dtab << ウィンドウを閉じる ;
にとって ( 私 = 1 、私 <= 眉 ( dt1 ) 、私 ++、
patient_no = カラム ( dt1 、 "患者" )[ 私 ] ;
pat_rows = dt << 行を取得する ( : 患者 == 評価する ( patient_no )) ;
カラム ( dt 、 "死1" )[ pat_rows ] = 1 ;
) ;
列を作成するこれは、列情報ペインまたはJSLのいずれかを通じて、ifステートメントを使用して実行できます。 これがJSLの簡単な例です。
dt = 現在のデータテーブル () ;
dt << 新しいコラム ( "死" 、式 ( もし ( : 名 ( 「365死亡」 ) == "*" 、 1 ) )) ;