再コード化ツールを使うと、列内のすべての値を一度に変更することができます。たとえば、コンピュータ会社と製薬会社の売り上げを比較するとしましょう。現在使っている会社ラベルは、「Computer」(コンピュータ)と「Pharmaceutical」(製薬)です。これらを「Technical」と「Drug」に変更したいとします。32行のデータをすべて調べて、値を1つ1つ変更していくのは非効率で単調である上、データが多い場合には誤入力する可能性もあります。値を1つ1つ変更するよりも、再コード化した方が得策です。
メモ:
• 複数の列の中で類似した値を再コード化するには、[列]>[列属性の一括設定]の[再コード化]オプションを使用します。列属性の一括設定を参照してください。
• 列見出しのみを再コードするには、[列]>[列名]>[列名の再コード化]を選択します。
データを再コードするには、以下の手順で操作します。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「Companies.jmp」を開きます。
2. 「タイプ」列の列見出しをクリックし、選択します。
3. [列]>[再コード化]を選択します。
デフォルトでは[列の新規作成]が選択されていて、再コード化した値は新しい列に入れられます。新しい列には「タイプ 2」という名前がつきます。
4. 「再コード化」ウィンドウで、「新しい値」ボックスに任意の値を入力します。この例では、「Computer」行に「Technical」と入力し、「Pharmaceutical」行に「Drug」と入力します。
「変更」ボックスに再コード化した値が表示されます。
図4.43 「再コード化」ウィンドウ
5. [再コード化]をクリックします。
新しい値が、データテーブル内の「タイプ 2」という新しい列に表示されます。
メモ:
• デフォルトでは、再コード化した値が新しい列に表示されます。選択した列を置き換える動作をデフォルトにするには、[ファイル]>[環境設定](Windows)または[JMP]>[環境設定](macOS)を選択した後、[再コード化]を選択し、「適用スタイル」から[値の置換]を選択します。
• デフォルトで、「再コード化」ウィンドウのデータは新しい値の昇順にソートされます。これは、[再コード化]と[列名の再コード化]の両方に言えることです。データのソート順を変更するには。[ファイル]>[環境設定](Windows)または[JMP]>[環境設定](macOS)を選択し、[再コード化]をクリックして、「ソート順」を変更します。[古い値]を選択すると、列名はデータテーブルに表示される自然な順序で、また、データは「値の表示順序」列プロパティの順序(指定されている場合)でソートされます。[度数]を選択すると、度数の降順にソートされます。
• データテーブルに値ラベルが含まれる場合、ラベルは「再コード化」ウィンドウの「新しいラベル」という列に表示されます。ラベルを編集すると、「値ラベル」列プロパティも変更されます。[値を値ラベルで置換]を選択して「新しい値」列のデータを変更することもできます。
• 列を再コード化すると、「値ラベル」・「値スコア」・「値の表示順序」・「値の色」・「上位カテゴリ」・「コード変換」・「欠測値のコード」列プロパティが更新されます。
• データタイプが「数値」の列に、数値でない値を入力した場合、データタイプを「文字」に変換するかどうかを確認するメッセージが表示されます。[はい]をクリックすると、列が変換され、新しい値が表示されます。[いいえ]をクリックした場合は、数値列のままになり、欠測値が表示されます。
• 「再コード化」ウィンドウで行を選択すると、データテーブルでもその値を持つ行が選択されます。
• 再コード化ツールは「式」タイプの列をサポートしています。
「再コード化」の赤い三角ボタンの横には、以下のオプションがあります。
列の新規作成
新しい列を作成して、変更されたデータを保存します。元の列はそのまま維持されます。
計算列の新規作成
新しい列を作成して、変更された値を計算式として保存します。データテーブル内における元の列で値を変更すると、計算式が自動的にその列の値も更新します。
値の置換
すべての変更を元のデータ列に適用します。
「再コード化」ウィンドウには、他に次のようなオプションがあります。
フィルタ
特定の値を検索します。下向きの矢印をクリックして検索オプションを選択します。各オプションの詳細については、「再コード化」ウィンドウの検索フィルタのオプションを参照してください。フィルタには、正規表現を使用することもできます。
グループを表示する
グループ化しているものも、グループ化していないものと同様に値を表示するには、オフにします。デフォルトでオンになっています。
グループ化されているものだけを表示
再コード化した値のうち、グループ化されているものだけを表示します。
グループ化されていないものだけを表示
グループ化されていない値だけを表示します。
グループ化
複数の値が選択されている場合に使用可能です。[グループ化]は、選択されている値を同じグループに含めます。グループ化する前に値を編集した場合、編集した値が「新しい値」列におけるグループを代表する文字列となります。そうでない場合は、出現頻度の最も高い値が代表する文字列となります。
すべて
すべてのデータ値を表示します。
変更したものだけ
値のうち変更したものだけを表示します。
変更していないものだけ
値のうち、変更していないものだけを表示します。
変更
「再コード化」ウィンドウで行った変更のリストを表示します。
ウィンドウで行った最後の変更内容を元に戻します。
ウィンドウで行った最後の変更を再び適用します。
再コード化したデータテーブルを再作成するためのスクリプトを保存するには、赤い三角ボタンのメニューから[スクリプト]を選択し、オプションを選択します。
「再コード化」ウィンドウには、以下のスクリプトオプションがあります。
アクションのシーケンスをスクリプトにする
アクションをスクリプトに保存します。データは省略されます。たとえば、赤い三角ボタンのオプションを使用してすべての文字列を大文字に変換する場合、生成されたスクリプトには、データを含めることなく、入力の文字列を大文字に変換するスクリプトが含まれます。
シーケンスを圧縮する
スクリプトから必要のない操作を削除することで、一連のアクションのスクリプトを圧縮します。多数の編集処理を含む再コード化をスピードアップするには、このオプションを使用してください。
空の項目を削除する
多重応答列で、データテーブル内の列を再コード化するときに列内の空の項目を削除します。
重複した項目を削除する
多重応答列で、重複した項目を除外します。たとえば、元のデータが「a, b, b, c」で、これらの項目に何の変更も加えられなかった場合、データテーブル内の再コード化された列の値は「a, b, c」になります。
項目を並べ替える
多重応答列で、項目を文字コード順に並べ替えます。たとえば、元のデータが「b, a, c」で、これらの項目に何の変更も加えられなかった場合、データテーブル内の再コード化された列の値は「a, b, c」になります。
「再コード化」ウィンドウの赤い三角ボタンをクリックすると、メニューに次のオプションが表示されます。
単語の最初の文字を大文字に変換
各単語の1文字目を大文字、残りの文字を小文字に変換します。
大文字に変換
すべての値を大文字に変換します。
小文字に変換
すべての値を小文字に変換します。
先頭と末尾のスペースを削除
最初および最後のスペースを削除します。たとえば、Johnの前後に余分なスペースが入っている場合、このコマンドによって削除されます。
スペースの削除
最初、最後、および中に含まれているスペースを削除します。
スペースの整理
項目の前後および項目内の重複した余分なスペース文字を削除します。つまり、2つ以上の連続したスペースが挿入されている場合、[スペースの整理]コマンドによってスペースが1つになります。
句読点の削除
文字列中の句読点と特殊文字(引用符、アンパサンドなど)を削除します。
文字列の置換
指定した文字のインスタンスをすべて新しい文字列に置き換えるか、または削除します。置換には、正規表現も使用できます。
最初の語
値を、文字列の最初の語に従ってグループ化します。たとえば、「John Smith」と「John Adams」という値があった場合、このコマンドによって両方が「John」というグループにまとめられます。
末尾の語
値を、文字列の最後の語に従ってグループ化します。
類似の値をグループ化
指定した方法でデータをグループ化することができます。グループ化オプションの中から任意のものを選択します。再コード化の「類似の値をグループ化」オプションを参照してください。
詳細
最初の語以外すべて
最初の語を取り除きます。
最後の語以外すべて
最後の語を取り除きます。
テーブルにあるマッピングの適用
マッピングのデータテーブルを用いて、現在のデータテーブルにある値を変更することができます。マッピング列の値の適用例を参照してください。
セグメントの抽出
指定しにマッチした文字列を抽出できます。カンマで分割する例を参照してください。
最も近いものを選択
マッピングデータテーブルの列にある値を、再コード化している列にマップできます。
数字として解析
データを数値に変換します。
文字値を数値コードに
文字値をコードに変換します。
文字に変換
数値を文字値に変換します。
値ラベルの追加
各値に値ラベルを割り当てることができます。
値を値ラベルで置換
列プロパティで「値ラベル」が設定されている値を、値ラベルに置き換えます。このオプションを使用できるのは、列に「値ラベル」プロパティがある場合だけです。
前回の設定
「再コード化」ウィンドウで前に加えた変更を再び適用します。
やり直し
ウィンドウをデフォルトの状態に戻します。
スクリプト
「再コード化」スクリプトの読み込み・マージ・保存を行うオプションを表示します。
– [ファイルから読み込み]は、前に再コード化に使用したJSLスクリプトを読み込みます。同じスクリプトを別のデータで実行し、再コード化します。
– [データテーブルから読み込み]は、 データテーブルに保存したJSLスクリプトを読み込みます。
– [再コード化結果列からの読み込み]は、選択した列(通常は、前に再コード化した結果が保存されている列)からデータを読み込みます。
– [ファイルに保存]は、「再コード化」の変更をJSLスクリプトに保存します。このオプションを選択すると、ファイルに名前を付けてから保存するためのウィンドウが表示されます。
– [データテーブルに保存]は、「再コード化」スクリプトを現在のデータテーブルに保存します。
保存したスクリプトの再コード化に変更を加えるには、データテーブルでスクリプトを右クリックし、[再コード化で編集]を選択します。変更を加えたら、もう一度赤い三角ボタンのメニューから[スクリプト]>[データテーブルに保存]を選択して、その変更を新しいスクリプトに保存できます。
– [データテーブルスクリプトとマージ]は、「再コード化」ウィンドウで加えた変更を、データテーブルに保存されている現在の「再コード化」スクリプトにマージします。スクリプトが複数ある場合は、データのマージ先のスクリプトを選択するためのウィンドウが表示されます。
– [スクリプトウィンドウに保存]は、スクリプトウィンドウに「再コード化」スクリプトを保存します。
計算式デポに発行
再コード化スクリプトを計算式デポに発行し、コードを他のスクリプトで再利用できるようにします。
最初の6つのオプションは、グループ化された値に対して使用できます。
新しい値にグループ化
(複数の値を選択した場合にのみ使用可能)選択した2つ以上の値に新しい値を指定できます。
...にグループ化
(複数の値を選択した場合にのみ使用可能)選択した値を右クリックすると、グループを代表する文字列を選択できます。このリストには、グループを代表する、最初の8個の文字列が表示されます。
新しい値を交換
2つの値が選択されている場合、[新しい値を交換]を実行すると、1つ目の値の新しい値と、2つ目の値の新しい値が入れ替わります。
代表する文字列に指定
グループ内の1つの値を右クリックし、[代表する文字列に指定]を選択すると、その値が「新しい値」になります。
グループから削除
値がグループ化された後、1つまたは複数の値を右クリックすると、そのグループからそれらの値を削除できます。
類似の値をグループ化
1つの文字列を右クリックして、似た値を見つけます。「グループ化オプション」ウィンドウが開きます。再コード化の「類似の値をグループ化」オプションを参照してください。
すべてのグループを開く
各グループのすべての値が表示されるように、グループを開きます。
すべてのグループを閉じる
各グループ内の値を折りたたみます。
以下のオプションはすべてのデータに対して使用できます。
行の選択
選択した行を、データテーブル内で選択します。「再コード化」ウィンドウで行を選択すると、それに対応する行がデータテーブルで自動的に選択されます。ただし、データテーブルで行を選択しても、それらの行は「再コード化」ウィンドウで選択されません。「再コード化」ウィンドウに表示されている行だけを選択したい場合は、行を右クリックしてこのオプションを選択します。
データテーブルに出力
「再コード化」ウィンドウに表示されている結果を含むデータテーブルを作成します。
選択されている列の行をコピー
右クリックした列からのみデータをコピーします。その後、データをデータテーブルに貼り付けることができます。
選択されているテーブルの行をコピー
すべての列のデータをコピーします。その後、データをデータテーブルに貼り付けることができます。
グループ化の精度を高めるために、[類似の値をグループ化]にある次のオプションを指定することができます。
大文字/小文字を無視
値の大文字と小文字の区別が無視されます。
印刷不可能な文字を無視
印刷不可能な文字が無視されます。一部のデータには、コンピュータだけが読み取れる印刷不可能な文字(ファイル区切り文字など)が含まれています。
スペースを無視
スペースが無視されます。
句読点などを無視
句読点が無視されます。
文字編集を許可
類似の値をグループ化するときに、文字を新しい値で置き換えることが可能になります。
異なる文字の割合の最大値
割合の最大の差に従って値がグループ化されます。たとえば、「0.25」と入力すると、最大で25%が異なる値がグループ化されます。
異なる文字の最大数
値が、隣接していない異なる文字の最大数に従ってグループ化されます。たとえば、「5」と入力すると、異なる文字が5個以下の値がグループ化されます。
元の文字列の最小長さ
短すぎる文字列は一致しなくなります。このオプションや、[異なる文字の割合の最大値]および[異なる文字の最大数]オプションをいろいろと試してみて、最適だと思われる値を指定してください。
検索ボックス横の下向き矢印ボタンをクリックして、検索を絞り込みます。
指定の単語を含む
指定した単語を一部に含む項目を返します。「ease oom」を検索すると、「Release Zoom」のような文字列を返します。
指定の句を含む
指定した文字列を完全に含む項目を返します。「text box」を検索すると、「text」のすぐ後に「box」(「Context Box」と「Text Box」など)を含む文字列を返します。
指定の句で始まる
指定した文字列で始まる項目を返します。
指定の句で終わる
指定した文字列で終わる項目を返します。
句全体が一致する
指定した文字列全体で構成されている項目を返します。「text box」を検索すると、「text box」となっている文字列だけを返します。
正規表現
検索ボックスでは、ワイルドカード(*)とピリオド(.)を使用できます。「get.*name」を検索すると、「get」の後に1つ以上の単語を含む文字列を検索します。「Get Color Theme Names」、「Get Name Info」、「Get Effect Names」などが返されます。
結果を逆にする
指定した検索条件に一致しない項目を返します。
すべての単語が一致する
指定したすべての単語を含む項目を返します。「t test」を検索すると、検索文字列のどちらか一方、または両方を含む、「Pat Test」、「Shortest Edit Script」、「Paired t test」などの文字列を返します。
大文字/小文字を無視
検索基準で大文字と小文字を区別しません。
語全体が一致する
「すべての単語が一致する」の設定に基づいて、指定した単語全体を含む項目を返します。「data filter」を検索する場合、「すべての単語が一致する」も選択されていると、「data」と「filter」の両方を含む文字列が返されます。
類似の値を、異なる文字の数に従ってグループ化することができます。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「Candy Bars.jmp」を開きます。
2. 「名前」列を選択します。
3. [列]>[再コード化]を選択します。
4. 赤い三角ボタンをクリックし、[類似の値をグループ化]を選択します。
5. [文字編集を許可]チェックボックスがオンになっていることを確認します。
6. 「異なる文字の割合の最大値」の横に「0.5」と入力します。
これで、異なる文字が50%以下の値がグループにまとめられます。言い換えれば、50%以上の文字が共通している値がグループを形成します。異なる文字の割合は、2つの値の間で、各値の合計文字数と一意の文字の合計数を比較して求めます。
7. 「異なる文字の最大数」の横に「6」と入力します。
異なる文字の文字数が6文字以下の値がグループ化されます。
8. [OK]をクリックします。
図4.44 類似した値のグループ化
「新しい値」列に表示されている値は、再コード化したデータテーブルの中でのグループ化された値を代表するものです。
9. (オプション)グループ内の別の古い値が新しい値を代表するように変更するには、「Almond Roca」を右クリックし、[代表する文字列に指定]を選択します。
図4.45 代表する文字列に指定
10. (オプション)データテーブル内の元のデータを再コード化された値に置き換えるには、赤い三角ボタンのメニューから[値の置換]を選択し、[再コード化]をクリックします。
「Aircraft Incidents.jmp」サンプルデータには、都市名と州名をカンマで区切って保存している列があります。値をカンマで分割し、列を再コード化して州名だけの列にしてみましょう。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「Aircraft Incidents.jmp」を開きます。
2. 「場所」列を選択し、[列]>[再コード化]を選択します。
図4.46 元のデータ
3. 赤い三角ボタンをクリックし、[詳細]>[セグメントの抽出]を選択します。
「プレビュー」ペインを見ると、都市名の後にカンマがあり、その後に州名が続いていることがわかります。各文字列の最後の2文字を抽出します。
4. ウィンドウの上部にある[スペースを含める]および[句読点を含める]チェックボックスをオフにします。
抽出でスペースと句読点は考慮されなくなります。
5. 「文字」ボックスにカンマを入力します。
図4.47 区切り文字の指定
最後の2文字を抽出するのにカンマが使用されます。
6. 「セグメントの抽出」ウィンドウで、「開始アンカー」と「終了アンカー」の上にそれぞれ「2」と入力します。
セグメントの抽出が2番目の語から始まり、2番目の語で終わることになります。
7. 「開始アンカー」と「終了アンカー」のオプションで[先頭から]が選択されていることを確認します。
図4.48 「セグメントの抽出」ウィンドウ
ヒント: 「キャプチャーするテキスト」セクションで、左矢印または右矢印をクリックすると、前または次の行の値が表示されます。これにより、設定をプレビューできます。
8. Figure 4.48に表示されている「プレビュー」ペインには、置換後の値として州の略称だけが表示されています。
9. 「プレビュー」ペインを下方向にスクロールします。「Atlantic Ocean」の現在の値と置換後の値が同じになっていることがわかります。このデータはカンマのところで分割できませんでした。
図4.49 州がないデータ
10. [OK]をクリックします。
同じ州名のエントリがグループ化されます。
図4.50 都市名, 州名の再コード化
別のデータテーブルの列を再コード化するための情報が含まれているデータがある場合には、そのデータを用いて再コード化できます。再コード化の情報が含まれたデータを、ここでは「マッピングデータ」と呼びます。この例では、「State Capitals.jmp」に含まれている州名を「State Abbreviations.jmp」(マッピングデータ)で定義されている州の略称に置き換えます。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「State Abbreviations.jmp」と「State Capitals.jmp」を開きます。
2. 「State Capitals.jmp」で、「州名」列を選択します。
3. [列]>[再コード化]を選択します。
4. 赤い三角ボタンをクリックし、[詳細]>[テーブルにあるマッピングの適用]を選択します。
5. [テーブルの選択]をクリックし、「State Abbreviations」を選択して、[OK]をクリックします。
6. 「対応する列」ボックスで、「州名」を選択します。
7. 「置き替える値の列」ボックスで、「略称」を選択します。
「対応」列と「置き替える値」列にマッピングの結果が表示されます。
図4.51 「対応」列と「置き替える値」列
8. [対応しない項目を置き換える]チェックボックスをオンにし、「no match」(マッチなし)と入力します。
「プレビュー」セクションに、値がどのようにマップされたかが示されます。下方向にスクロールしていくと、「no match」となっている州名が、スペルミスのために「略称」列のどの州にもマップされていないことがわかります。
図4.52 マッチしなかった列のプレビュー
9. [OK]をクリックし、[再コード化]をクリックします。
「State Capitals.jmp」に、州の略称を含む「州名 2」という新しい列が表示されます。
図4.53 州名とその略称
マッチしなかったエントリを修正するには、スペルが間違っている語の修正例を参照してください。
データテーブルを辞書として使用することで、スペルが間違っている語を修正できます。「State Abbreviations.jmp」には、州名とその略称の列が含まれています。「State Capitals.jmp」には、うっかり見逃してしまいそうな些細なスペルミスのある州名がいくつか含まれています。この例では、スペルが間違っている州名の修正方法を紹介します。
1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「State Abbreviations.jmp」と「State Capitals.jmp」を開きます。
2. 「State Capitals.jmp」で、「州名」列を選択します。
3. [列]>[再コード化]を選択します。
4. 赤い三角ボタンをクリックし、[詳細]>[最も近いものを選択]を選択します。
5. [テーブルの選択]をクリックし、「State Abbreviations」を選択して、[OK]をクリックします。
6. 「対応する列」ボックスで、「州名」を選択します。
7. 「プレビュー」ペインを下方向にスクロールします。すると、「Massachusets」が「Massachusetts」に、「Missisippi」が「Mississippi」に置き換えられていることがわかります。
図4.54 スペルが間違っている州名の置換
8. [OK]をクリックし、[再コード化]をクリックします。
修正された州名を含む新しい列がデータテーブルに追加されます。
[数字として解析]オプションは、文字データを数値データに変えます。このオプションは、JSLのNum()文字関数に相当します。
日時・通貨・科学表記など、多くの形式がサポートされています。形式がサポートされていない場合は、欠測値が表示されます。
1. データテーブルを開き、数値と文字値の両方を含む列を選択します。
図4.55 数値データと文字データを含む列
2. [列]>[再コード化]を選択します。
3. 赤い三角ボタンのメニューから[数字として解析]を選択します。
古い値と新しい値が表示されます。
図4.56 新しい値のプレビュー
4. [再コード化]をクリックします。
再コード化された新しい列がデータテーブルに追加されます。列のデータタイプは数値です。
「a」は数値として解析できませんでした。そのため、新しい列には値の代わりに欠測値が表示されます。
図4.57 解析された数値
列を再コード化した場合、再コード化した値をスクリプトに保存することができます。スクリプトを読み込むか、または実行すると、元の列を再び再コード化できます。
ここでは、同じ値を持つ別の列を再コード化したいとしましょう。それには、再コード化した値をまず計算式列に保存し、計算式に編集を加えます。
1. 「再コード化」ウィンドウの「新しい値」列に、再コード化した値を入力します。
2. 赤い三角ボタンの横にあるリストで[計算列の新規作成]を選択します。
3. [再コード化]をクリックします。
4. 計算式の設定された列を右クリックし、[計算式]を選択します。
5. 計算式の中で、再コード化した列を選択します。
この例では、「性別」列が再コード化されています。
図4.58 再コード化した列
6. 「列」リストで、「性別」を置き換える列を選択します。
この例では、「性別」列を「gender」に置き換えるため、「gender」を選択します。
図4.59 「gender」列の選択