複数の列を選択して不足している列の値を更新するこんにちは、
私はJMPスクリプティングが初めてです。"Censor"という単語を含む複数の列を整理し、欠損値を更新するスクリプトを作成しています。下記はサンプルデータです。私は3つの列Censor A、Censor B、およびCensor Cをリストしましたが、現実の世界では、列の数は毎回異なる場合があります。そのため、作業 "Censor"を含む列を選択し、次にすべての欠損値を "S"で更新する必要があります。JSLでそれを実行できますか?私はまだスクリプトを学んでいますが、JMPヘルプで方法を見つけることができませんでした。
| 検閲官A | 検閲官B | 検閲官C |
| F | | F |
| F | F | |
| F | | |
| | | F |
| | F | F |
| F | | |
再:複数の列を選択して不足している列の値を更新するこれは、欠けているセルを埋めるための簡単なスクリプトです。
Names Default To Here( 1 );
// Create a sample data table
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "Censor A",
Character,
"Nominal",
Set Values( {"F", "F", "F", "", "", "F"} )
),
New Column( "Censor B",
Character,
"Nominal",
Set Values( {"", "F", "", "", "F", ""} )
),
New Column( "Censor C",
Character,
"Nominal",
Set Values( {"F", "", "", "F", "F", ""} )
)
);
// Get the names of all of the columns
colNames = dt << get column names( string );
// Loop across all columns and if a Censor column
// then process
For( i = 1, i <= N Items( colNames ), i++,
If( Left( colNames[i], 6 ) == "Censor",
dt << select where( As Column( colNames[i] ) == "" );
// If blanks are found then process
If( N Rows( dt << get selected rows ) > 0,
As Column( colNames[i] )[dt << get selected Rows] = "S"
);
)
);再:複数の列を選択して不足している列の値を更新するありがとうございました!再:複数の列を選択して不足している列の値を更新するご協力いただきありがとうございます!これは別の質問です。上記の場合、欠損値を別の列の値で更新するにはどうすればよいですか。再:複数の列を選択して不足している列の値を更新するこれは私があなたが望むと思うことをするために私の最初のスクリプトへの修正です.....
Names Default To Here( 1 );
// Create a sample data table
dt = New Table( "Example 2",
Add Rows( 6 ),
New Column( "Censor A",
Character,
"Nominal",
Set Values( {"F", "F", "F", "", "", "F"} )
),
New Column( "Censor B",
Character,
"Nominal",
Set Values( {"", "F", "", "", "F", ""} )
),
New Column( "Censor C",
Character,
"Nominal",
Set Values( {"F", "", "", "F", "F", ""} )
),
New Column( "Setting Column",
Character,
"Nominal",
Set Values( {"Z", "X", "Y", "W", "P", "Q"} )
)
);
// Get the names of all of the columns
colNames = dt << get column names( string );
// Loop across all columns and if a Censor column
// then process
For( i = 1, i <= N Items( colNames ), i++,
If( Left( colNames[i], 6 ) == "Censor",
dt << select where( As Column( colNames[i] ) == "" );
// If blanks are found then process
rowMat = dt << get selected rows;
If( N Rows( rowMat ) > 0,
For( k = 1, k <= N Rows( rowMat ), k++,
Column( colNames[i] )[rowMat[k]] = :Setting Column[rowMat[k]]
)
);
)
);