データ テーブルかデータ エンジニアリングを使用して、データセットで新しいフィールドを追加して計算できます。 計算フィールドでは、データセットからフィールドを選択して、演算子と関数を適用することで、成長率や損失率などの値や時間の経過に伴う変化を作成できます。
また、[回答の検索] にある [変化率の計算]、[比率の計算]、[Z スコアの計算] を使用して、フィールドを計算することもできます。
ヒント:
データ テーブルを使用して、正規化されたデータをマップ、チャート、テーブルのデータセットに追加します。 データが計算され、データセットに追加されたら、フィールドが割合/比率フィールド として識別されるようにフィールド タイプを変更します。 データの正規化の詳細については、「コロプレス マップ」をご参照ください。
データ テーブルのフィールドの計算
データ テーブルで計算されたフィールドはワークブックにのみ表示され、元のデータセットには追加されません。 計算フィールドをワークブックの範囲外に保持したい場合は、データセットを共有するか、データ エンジニアリングを使用することで、新しいフィーチャ レイヤーを作成できます。
注意:
データ テーブルは、データの代表的な内容を表示するもので、2,000 行に制限されています。 テーブルを昇順と降順に並べ替えることで、それぞれ上位 2,000 行と下位 2,000 行を表示できます。 すべての計算がデータセット全体に対して実行されます。
データ テーブルのフィールドを計算するには、以下の手順を実行します。
- ワークブックを開き、必要に応じてデータを追加します。
- データ ウィンドウで、計算されたフィールドを追加するデータセットの横にある [データセット オプション] ボタン をクリックします。
- [データ テーブルの表示] をクリックします。
- [+ フィールド] をクリックします。
[新しいフィールド] という名前の列がテーブルに追加されます。
注意:
列のサイズ変更および並べ替えが可能ですが、これらの変更は保存されません。
- 新しい列の見出しをクリックして、よりわかりやすい名前を指定します。
- [fx] または [計算関数の入力] をクリックし、関数、フィールド名、演算子のメニューを表示して、式を作成します。
同等のキーボード コマンドを使用して、[fx] メニューのボタンを置き換えることもできます。
- 必要に応じて、関数、フィールド、演算子を使用して、計算を完了します。
- [実行] をクリックします。
[実行] ボタンが有効化されていない場合、計算の構文にエラーがあります。
計算された新しいフィールドが、データセットの最後に表示されます。 計算フィールドを削除するには、それを選択して [計算フィールドの削除] ボタン をクリックします。
データ エンジニアリングを使用した列の計算
注意:
データ エンジニアリングは、Insights desktop で使用できます。 すべての Insights in ArcGIS Online および Insights in ArcGIS Enterprise ユーザーは、Insights desktop にアクセスすることができます。 詳細については、「ArcGIS Insights の概要」をご参照ください。
データ エンジニアリングは現時点でプレビュー版です。
[列の計算] ツールをデータ モデルに追加し、出力データセットへの列の追加に使用できます。 データ ワークブックで計算された列は、ワークブックだけに存在するのではなく、出力データセットに永続的に追加されます。
データ エンジニアリングを使用して列を計算するには、以下の手順を実行します。
- Insights desktop でデータ ワークブックを開き、必要に応じてデータを追加します。
- サイド ツールバーで [列の計算] ボタン をクリックします。
- [新しい列の名前] パラメーターで新しい列の名前を入力します。
注意:
Insights でサポートされているデータベースは、列名に文字、数字、およびアンダースコアのみをサポートしています。 列名でサポートされていない文字は、データベースに保存するときにアンダースコアに変換されます (たとえば、population/sq mile は population_sq_mile に変換されます)。 最適な結果を得るためには、サポートされている文字のみを使用する列名を適用してから、必要に応じて他の文字で列のエイリアスを更新します。
- [列の式] ボックスで、必要に応じて、関数、列名、演算子を使用して計算を完了します。
同等のキーボード コマンドを使用してボタンを置き換えることもできます。
注意:
データ ワークブックに複数のデータセットがある場合、入力オプションはアクティブなテーブルに基づきます。
- [実行] をクリックします。
[実行] ボタンが有効化されていない場合、計算の構文にエラーがあります。
新しい計算済み列がテーブルに追加され、[列の計算] ツールがデータ モデルに追加されます。
演算子
フィールドの計算には、算術演算子と論理演算子の両方が必要になる場合があります。 フィールドの計算には、次の演算子が使用できます。
演算子 | 使用 |
---|---|
+ | 加算 |
- | 減算 |
× | 乗算 同等のキーボード コマンドは * です。 |
÷ | 除算 同等のキーボード コマンドは / です。 |
xy | Power 関数 同等のキーボード コマンドは ^ です。 |
< | 未満。 |
> | より大きい。 |
= | 「等しい」を意味します。 |
<= | 以下。 |
>= | 以上。 |
<> | 等しくない。 |
, | カンマ。関数内で構文のコンポーネント間の区切りとして使用されます。 |
( | 左括弧 |
) | 右括弧 |
AND | すべての条件を満たす必要がある論理演算子。 |
OR | 条件の 1 つを満たす必要がある論理演算子。 |
IS NULL | フィールドの値が NULL かどうかをテストするバイナリ演算子。 テストの結果、値が NULL 以外の場合は出力値 0 が割り当てられ、値が NULL の場合は出力値 1 が割り当てられます。 |
IS NOT NULL | フィールドの値が NULL 以外かどうかをテストするバイナリ演算子。 テストの結果、値が NULL の場合は出力値 0 が割り当てられ、値が NULL 以外の場合は出力値 1 が割り当てられます。 |
注意:
数学演算子 (+、-、>、= など) には、数値フィールドおよび割合/比率フィールドとの互換性があります。 CONCATENATE() 関数と DATEDIF() 関数は、それぞれ文字列フィールドと日付/時間フィールドを表す数学演算子の代わりに使用できます。
IS NULL および IS NOT NULL 演算子には、位置を除くすべてのフィールド タイプ (文字列、数値、割合/比率、および日付/時間) との互換性があります。 NULL 値を含む一部の文字列フィールドは空の文字列として構成されることがあります。 この場合には、IS NULL および IS NOT NULL から予想された結果が返されません。 field IS NULL および field IS NOT NULL の代わりに、それぞれ field="" および field<>"" を使用する必要があります。
AND および OR 演算子を使用すると、対応する論理関数とは異なる構文の条件を結合できます。 次の例は、関数と演算子を使用した同等の計算を示しています。
注意:
フィールド演算を実行する場合は、AND および OR を IF() 関数内で使用する必要があります。
関数 | 演算子 |
---|---|
IF(AND(MeanAge>=18, MeanAge<=33),"Millennial","Other") | IF(MeanAge>=18 AND MeanAge<=33,"Millennial","Other") |
IF(OR(Crime="Theft", Crime="Theft from vehicle", Crime="Shoplifting"), "Larceny", "Other") | IF(Crime="Theft" OR Crime="Theft from vehicle" OR Crime="Shoplifting", "Larceny", "Other") |
関数
関数にアクセスするには、データ テーブルの [fx] ボタンまたは [計算関数の入力] フィールドを使用します。 関数には次の 4 種類があります。 文字列、数値、日付、および論理。
計算に関数を追加するとき、関数の構文がポップアップに表示されます。 閉じるボタン を使用してポップアップを削除したり、[計算関数の入力] フィールドの関数をクリックしてポップアップを再表示したりできます。
文字列関数
多くの文字列関数は、文字列入力を使用して文字列出力を生成します。 例外は VALUE() 関数と FIND() 関数の 2 つであり、両方とも文字列入力を使用して数値出力を生成します。
文字列関数の入力テキストには、リテラル (引用符で囲んだテキスト) またはカテゴリ フィールドの値を使用できます。 次の表では、例としてカテゴリ フィールドと、それらのフィールドに含まれていると考えられるサンプル値を使用しています。 フィールド値で使用されている引用符は、フィールドが、カテゴリに分類されたデータを含むことを示します。
構文 | 説明 | 例 |
---|---|---|
CONCATENATE(text1, [text2], ... ) | 2 つ以上の文字列値を連結します。 | カリフォルニア州の学校のデータセットには、Address (住所)、City (市区町村)、および ZIP (郵便番号) のフィールドがあります。 CONCATENATE() 関数を使用して、所在地住所の単一フィールドを作成できます。
|
FIND(find_text, within_text, [start_num]) | 文字列フィールドまたはテキスト フィールド内で、指定されたテキスト (1 文字以上) の位置を返します。 FIND() 関数は、MID()、LEFT()、RIGHT() など、他の関数を組み合わせて使用すると非常に便利な場合があります。 | あるデータセットには、住所 (番地と道路名を含む) のフィールドがあります。 道路別にデータを分類するには、MID() 関数を使用して、住所から道路名を削除する必要があります。 ただし、それぞれの番地は長さが異なるため、行ごとに start_num は異なります。 FIND() 関数を使用して、start_num を見つけることができます。
|
LEFT(text, [num_chars]) | テキスト フィールドの一部を返します。
| 交通事故のデータセットには事故発生日のカテゴリ フィールドがあり、曜日、日付、年が含まれています。 曜日別の事故を調査するために、LEFT() 関数を使用して新しいフィールドを計算し、フィールド (曜日で始まる) の最初の 3 文字を表示することができます。
|
LOWER(text) | すべてのデータを小文字に変換した文字式を返します。 | ある公共事業の部署が、交換を必要とする道路標識のリストを作成しています。 新しいエントリがリストに追加されるにつれ、Status フィールドの書式が標準から逸脱し、一意の値を使用して標識を表示することが困難になっています。 LOWER() 関数を使用して、Status フィールドのすべての文字が小文字になるように標準化できます。
|
MID(text, start_num, [num_chars]) | テキスト フィールドの一部を返します。
| カリフォルニア州の学校のデータセットには、Address (住所)、City (市区町村)、および ZIP (郵便番号) のフィールドがあります。 MID() 関数を使用して、住所から道路名を取り出すことができます。
|
RIGHT(text, [num_chars]) | テキスト フィールドの一部を返します。
| 国立公園のデータセットには、公園名と 2 桁の州コードを持つフィールドがあります。 州別に公園をシンボル表示するために、新しいフィールドを追加し、RIGHT() 関数を使用してそのフィールドを計算できます。
|
SUBSTITUTE(source_text, old_text, new_text) | 文字列内の古いテキストを、指定した新しいテキストに置き換えます。
| 道路のくぼみの位置のデータセットには、道路名が格納されたフィールドが含まれています。 「Main Street」という名前が「5th Street」に変更された場合、このデータセットを更新する必要があります。 SUBSTITUTE() 関数を使用して、street_name フィールドを更新できます。
注意:SUBSTITUTE() 関数は、old_text のすべての出現を new_text に置き換えます。 たとえば、関数 SUBSTITUTE("aba", "a", "c") の結果のテキストは「cbc」です。 |
TRIM(text) | 末尾の余分なスペースを削除して、文字列を返します。 | フィーチャ サービスのテキスト フィールドの値には、先頭と末尾に余分なスペースがあります。 TRIM() 関数を使用して、余分なスペースを削除できます。
|
UPPER(text) | すべてのデータを大文字に変換した文字式を返します。 | NGO 組織本部の位置のデータセットには、組織の正式名称とその略称 (該当する場合) を持つフィールドがあります。 UPPER() 関数を使用して、略称がすべて大文字になるように標準化できます。
|
VALUE(text, [format]) | テキストを数値に変換します。
注意:format を指定しない場合、VALUE() 関数内にネストされた関数が予期しない結果を出力することがあります。 このため、VALUE() 関数を使用する場合は format を指定することをお勧めします。 VALUE() 関数は現在、テキストから負の数値への変換をサポートしていません。 | 小売店のデータセットには、売上金額のカテゴリ フィールドがあります。 VALUE() 関数を使用して、Revenue フィールドを数値に変換できます。
|
数値関数
数値関数は、数値入力を使用して数値出力を生成します。 数値関数は多くの場合、他の関数と組み合わせて、またはデータ変換の方法として使用されます。
入力数値には、リテラルの数値または数値フィールドを使用できます。 以下のいくつかの例では、各関数の使用方法をよりよく示すために、フィールドではなく入力として数値を使用します。
構文 | 説明 | 例 |
---|---|---|
ABS(number) | 絶対値を返します。 |
|
AVG(number) | 平均値を返します。 |
|
CEILING(number) | 数値を、1 の位を切り上げます。 |
|
COS(number) | 指定した角度 (ラジアン単位) の余弦。 次の式を使用して、角度をラジアンに変換できます。
|
|
FLOOR(number) | 数値を、1 の位を切り下げます。 |
|
LN(number) | 指定した浮動小数点数の表現の自然対数。 自然対数は、定数 e (約 2.72) を底として使用します。 |
|
LOG(number) | 指定した値を底とする数値の対数。 デフォルトの底は 10 です。 |
|
MAX(number) または MAX(date) | 最大値を返します。 |
|
MIN(number) または MIN(date) | 最小値を返します。 |
|
PERCENTTOTAL(number) | フィールドの合計を使用して、各フィールド値のパーセントを計算します。 |
|
POWER(number, power) | 指定した指数で式を累乗した値。 |
|
ROUND(number, num_digits) | 数値を指定の桁数に丸めます。
|
|
SIN(number) | 指定した角度 (ラジアン単位) の正弦。 次の式を使用して、角度をラジアンに変換できます。
|
|
STDEV(number) | 数値フィールドの標準偏差。 |
|
SUM(number) | 合計値を返します。 |
|
TAN(number) | 入力式の正接を返します。 次の式を使用して、角度をラジアンに変換できます。
|
|
日付関数
日付関数は、使用する関数に応じて、日付フィールドまたはテキストを使用することができ、入力を使用しないこともできます。 DATEVALUE() 関数を使用して、DATEDIF() 関数または TIMEDIF() 関数の日付フィールドを置換できます。
注意:
DATEDIF() と DATEADD() で使用される日付/時間フィールドは、日付を含む形式 (日時または日付のみ) である必要があります。 時間のみの日付/時間フィールドは使用できません。
TIMEDIF() で使用される日付/時間フィールドは、時間を含む形式 (日時または時間のみ) である必要があります。 日付のみの日付/時間フィールドは使用できません。
次の日付の区切り文字がサポートされています: ポイント (.)、ダッシュ (-)、スラッシュ (/)。
構文 | 説明 | 例 |
---|---|---|
DATE(year, month, day, [hour, minute, second], [AM/PM]) | 3 つ以上の別々のフィールドまたは値を使用して、日付/時間フィールドを作成します。 次のように指定できます。
注意:AM/PM パラメーター以外のすべての入力フィールドには、数値または文字列を指定できます。 数値は整数値である必要があります。 2 桁の年は文字列である必要があります。 データベース データセットとともに DATE() 関数を使用し、いずれかの時間パラメーター (hour、minute、または second) を指定した場合、すべての時間パラメーターの入力値を入力する必要があります。 | あるレストランのデータセットには、最近の衛生検査の日時を含む文字列フィールドがあります。 DATE() 関数を使用して、検査の日付フィールドを作成できます。
注意:この例の結果の日付は、24 時間制を使用して書式設定されます。 12 時間制を使用するには、AM または PM を指定する必要があります。 同じ例の関数は、DATE(2016, Month, Day, Hour, Min, 00, "AM") のように記述できます。 |
TIME(hour, minute, second) | 3 つの別々のフィールドまたは値を使用して、日付/時間フィールドを作成します。 次のように指定できます。
注意:AM/PM パラメーター以外のすべての入力フィールドには、数値または文字列を指定できます。 数値は整数値である必要があります。 | 病院レコードのデータセットには、患者の到着時間が含まれています。 TIME() 関数を使用して、レコードの時間フィールドを作成できます。
注意:この例の結果の時間は、24 時間制を使用して書式設定されます。 12 時間制を使用するには、AM または PM を指定する必要があります。 同じ例の関数は、TIME(Hour, Min, 00, "AM") のように記述できます。 |
DATEADD(date, integer, [unit]) | 指定した時間数を入力フィールドの日付に加算します。
単位が設定されていない場合、"D" が使用されます。 月が日付/時間フィールドに加算される場合、出力は、月の日数に関係なく、各月の同じ日になります。 月の対応する日が新しい月で有効でない場合は、その月の最終日が使用されます。 たとえば、計算によって 3 か月が入力フィールドに加算され、元の日付の 1 つが「November 30, 2010」である場合、その出力値「February 30, 2022」は無効です。 2022 年はうるう年であるため、結果は「February 28, 2022」と記録されます。 | 公衆衛生部は、保健区内の患者のワクチン接種記録を残す業務を担っています。 ある特定のワクチンは、60 日以上、180 日未満の間隔をおいて 2 回目の接種を受ける必要があります。 DATEADD() を使用すると、患者が 2 回目の接種を受けられる最初の日付を含むフィールドと、最終的な接種の期日を含むフィールドを作成できます。 最短接種可能日:
最終期日:
|
TIMEADD(time, integer, unit) | 指定した時間数を入力フィールドの時間に加算します。
| データセットの日付と時間は UTC (協定世界時) で記録されているため、CST (中部標準時) に変換する必要があります。 TIMEADD() 関数を使用して、CST 時間を使用する日付/時間フィールドを作成できます。
|
DATEDIF(start_date, end_date, [unit]) | 2 つの日付間の経過時間を計算します。 start_date は、end_date より前の日付でなければなりません。そうでない場合、出力が負の値になります。
単位が設定されていない場合、"D" が使用されます。 各単位の結果に対して、端数は次のように処理されます。
| あるレストランのデータセットには、最近の衛生検査の日付があります。 DATEDIF() 関数を使用して、衛生検査日の間の経過日数を計算できます。 例 1:
例 2:
例 3:
|
TIMEDIF(start_time, end_time, [unit]) | 2 つの日付/時間値間の経過時間を計算します。 start_time は、end_time より前の日付でなければなりません。そうでない場合、出力が負の値になります。
単位が設定されていない場合、"ss" が使用されます。 各単位の結果に対して、端数は次のように処理されます。
| 病院運営レコードのデータセットには、手術の開始時間と終了時間が含まれています。 それぞれの患者の手術に要した時間は、TIMEDIF() 関数を使用して計算できます。
|
DATEVALUE(date_text, [format]) | テキストを日付に変換します。
注意:format を指定しない場合、DATEVALUE() 関数内にネストされた関数が予期しない結果を出力することがあります。 このため、DATEVALUE() 内に関数をネストする場合は format を指定することをお勧めします。 format を指定しない場合、区切り記号なしで指定された日付 (例: "10312016") はミリ秒として扱われます。 このため、区切り文字なしで日付を入力する場合は、書式を指定することをお勧めします。 区切り文字が指定されているが、format が指定されていない日付の場合、書式が推定されます。 書式が推定できない場合、デフォルトの "MM-DD-YY" が適用されます。 DATEVALUE() 関数は、引用符で囲まれたテキストまたは文字列フィールドに入力されたテキストだけを読み取ることができます。 日付/時間フィールドを DATEVALUE() 関数の入力として使用することはできません。 | あるレストランのデータセットには、最近の衛生検査の日付があります。 現在の日付を指定する DATEVALUE() 関数を使用して、前回の衛生検査日からの経過日数を計算できます。
日時は、複数の書式を設定できます。 次の例は、テキストを日付書式に設定する方法を示しています。
|
NOW() | 日/時の書式で現在の日付と時刻を返します。 時刻は、UTC (協定世界時) に基づいて記録されます。 | あるレストランのデータセットには、最近の衛生検査の日付があります。 現在の日付を指定する NOW() 関数を使用して、前回の衛生検査日からの経過日数を計算できます。
|
論理関数
論理関数は、文字列入力または数値入力を使用して文字列出力または数値出力を生成します。 入力は、リテラル (引用符で囲んだテキストまたは定数) またはフィールド値にすることができます。 次の表では、例としてフィールド値とリテラル値の組み合わせに加えて、特定のフィールドに含まれていると考えられるサンプル値を使用しています。
構文 | 説明 | 例 |
---|---|---|
AND(condition,condition, ...) | 2 つ以上の条件を検証して、すべての条件を満たしている場合は TRUE を返します。 AND() を、IF() 関数の condition パラメーター内で使用する必要があります。
| データセットには、各ブロック グループ内に住んでいる人の平均年齢が格納されています。 市場調査員は、どのブロック グループが主にミレニアル世代を含んでいるかを知る必要があります。 ミレニアル世代の年齢範囲内の平均年齢を含むブロック グループは、IF() 関数と AND() 関数の組み合わせを使用して見つけることができます。
|
IF(condition, TRUE_expression, [FALSE_expression]) | 条件を検証し、その結果に基づいて TRUE または FALSE の値を返します。
TRUE_expression および FALSE_expression は、ネストされた IF() 関数などの任意の有効な条件式にすることができます。 TRUE_expression および FALSE_expression のデータ タイプは、同じタイプ (たとえば、両方とも文字列または両方とも数値) である必要があります。 | データセットには、店舗の収入と支出が格納されたフィールドが含まれています。これらのフィールドを使用して、店舗の状態 (純利益または純損失のいずれを記録したか) を確認することができます。 IF() 関数を使用して、各店舗の状態を確認することができます。
|
ISNULL(field)* | フィールドの値が NULL かどうかをテストします。 テストの結果、値が NULL 以外の場合は出力値 0 が割り当てられ、値が NULL の場合は出力値 1 が割り当てられます。
ISNULL() は単独で使用したり、IF() 関数の condition パラメーター内で使用したりできます。 | データセットには、自転車運転者が関わった交通事故の位置と、衝突事故が発生した道路の自転車ルートのタイプが含まれています。 自転車ルートのない道路で発生した衝突事故の場合、RouteType フィールドは空白のままになります。 データセットは、IF() と ISNULL() 関数の組み合わせを使用して、NULL 値を入力するように更新できます。
|
ISNOTNULL(field)* | フィールドの値が NULL 以外かどうかをテストします。 テストの結果、値が NULL の場合は出力値 0 が割り当てられ、値が NULL 以外の場合は出力値 1 が割り当てられます。
ISNOTNULL() は単独で使用したり、IF() 関数の condition パラメーター内で使用したりできます。 | データセットには、自転車運転者が関わった交通事故の位置と、衝突事故が発生した道路の自転車ルートのタイプが含まれています。 自転車ルートのない道路で発生した衝突事故の場合、RouteType フィールドは空白のままになります。 データセットは、IF() と ISNOTNULL() 関数の組み合わせを使用して、NULL 値を入力するように更新できます。
|
OR(condition,condition, ...) | 2 以上の条件をテストして、少なくとも 1 つの条件を満たしている場合は TRUE を返します。 OR() を、IF() 関数の condition パラメーター内で使用する必要があります。
| データセットには、ある都市全体の犯罪の位置が含まれています。 犯罪分析者は、類似する他の犯罪と比較して、窃盗のパターンを分析する必要があります。 窃盗を他の犯罪と比較するために、この分析者は、各犯罪が窃盗と見なされるかどうかを最初に決定する必要があります。 犯罪の種類は、IF() 関数と OR() 関数の組み合わせを使用して決定できます。
|
* データのないフィールドは、NULL ではなく空として構成される場合があります。 この場合には、ISNULL() および ISNOTNULL() から予想された結果が返されません。 ISNULL(field) および ISNOTNULL(field) の代わりに、それぞれ field="" および field<>"" を使用する必要があります。