2

私は現在 Google Refine を使用しています。私の目標は、1 つの既存の列を 2 つの部分に分割することです。ビルトインの「add column based on...」機能を使用しています。列には、通りの名前とそれに対応する番地が含まれています。たとえば、次のようになります。

Stackoverflow Street 89

すべての行は同じように構造化されています。つまり、通りの名前は長い場合も短い場合もあり、1 つまたは複数の単語を含むことができますが、常に (家) 番号で終わり、常に空白で区切られます。

私は Google Refine を使用しているので、GREL ステートメント (Google Refine Expression Language) を使用してこれを実行しようとしていました。アイデアは次のようなものです。空白スペースで分割されたすべての値を断片に分割します。各分割値を変数に保存します。次に、特定の値に数値 (番地) が含まれているかどうかを確認します。数値の場合は、その値を取得して出力に転送します。私はすでにこのようなものを手に入れました。

forEach(value.split(" "), v, v).join(";")

ここに質問があります: forEach 関数内に IF 関数を統合するにはどうすればよいですか? その方法を知っていれば、おそらく値を分割するだけでなく、数値かどうかを確認することもできます。数値かどうかを確認するには、isNumeric(value) を使用できます。

すべてのヒントに感謝します。ありがとう、ヨルグ。

4

2 に答える 2

3

あなたが説明するすべての制約が当てはまる場合(それは常に最後のピースであり、常に存在します)、私はただ使用しますvalue.split('')[-1]

あなたが尋ねた直接の質問への答えとして、他の誰かが検索でこれを見つけた場合に備えて、これまでのあなたの表現は次のようになります。

value.split(" ").join(";")

つまり、forEach は何もしていません。if() を統合するには、forEach の 3 番目のパラメーターを形成する式の一部として使用します。

forEach(value.split(" "), v, if(isNumeric(v),null,v)).join(";")

達成しようとしている出力形式はわかりませんが、これにより、セル値内のすべての非数値単語のセミコロン区切りのリストが得られます。

于 2012-11-21T16:39:06.777 に答える
1

私はEdit column > Split into several columns...あなたの列で使用し、それを regex\s(?=\d+)で分割します。つまり、分割はスペース文字の後に複数の数字が続く場所でなければならず、数字は分割の一部ではありません。

于 2012-11-21T15:55:47.260 に答える