2017-02-19 12 views
-1

さまざまなデータを使い、仕事関連のタスクに最適な技術を見つけ出すためのテクノロジーを使いこなすと、私はマイナーなデータクリーニングを行う必要があることが分かりました。d3 regexまたはNotepad ++のデータクリーニング

"19028848 
" 

"27515492 
AirBnB-16002513-4222RF" 

注私は確認していない理由を引用符:

は、私は2つだけ異なる可能な入力フォーマットを持っているcsvファイルで、コラム「BookingID」を持っています新しい改行があるかどうかを確認します。おそらく、元のファイルがExcelであり、Excelを使用してCSVとして保存するという事実と関係しています。いずれの場合においても

、私はスケールマッピングで使用するD3のための配列の配列として欲しい私のCSVの2つの列をマッピングし、フィルタリングし、次のD3コードを持っている:

sales = data 
    .map(d => [+d["BookingID"], +d["Total Paid"]]) 
    .filter(results => results.every(not(isNaN))); 

これは、のために働きます私がここに書いた最初のフォーマットのすべての予約IDは、2番目のものではありません(つまり、それらはフィルタにかけられます)。上記の例の場合、27515492で終わるように、番号の後ろから始まるすべてを削除するソリューションが欲しいです。私はこのすべてでひどく経験はしていませんが、人々はd3で多くのクリーニングをしているとは想像できません、正しい?私がd3、highcharts、Tableauなどを最終的に使用するかどうか分からないので、これをExcelのスプレッドシートまたはNotepad ++レベルのCSVで解決したいと思います。私はちょうど別の質問からCSVedを見ましたが、私はただの解決策が必要です。必ずしもGUIやそれ以外のものは必要ありません。私はあなたの推薦(と正規表現、あなたは正規表現jedis)ありがとうございます。

+0

あなたの質問は明らかではありませんが、NPPの '$ 1'で置き換える' ^(\ d +)。* 'のような正規表現はうまくいくはずです。 –

+0

ありがとうございますが、わかりません... https://regex101.com/r/gYVpwG/1 –

+0

Npp用の正規表現は、正規表現のフレーバをサポートしていないため、regex101で動作する必要はありません。とにかく私は携帯電話に乗っていてregex101をロードできません。 –

答えて

1

正規表現を使用する場合は、このすべてが簡単にJavaScriptで行うことができるので、メモ帳でデータ++のプリプロセスをする必要は、ありません。

// data contains the result of your CSV input processed by d3.csv() 
 
var data = [{ 
 
    "BookingID": "19028848\n", 
 
    "Total Paid": "1" 
 
}, { 
 
    "BookingID": "27515492\nAirBnB-16002513-4222RF", 
 
    "Total Paid": "1" 
 
}]; 
 

 
var sales = data 
 
    .map(d => [ 
 
    +/^(\d+).*/.exec(d["BookingID"])[1], // extract ID from input strings 
 
    +d["Total Paid"] 
 
    ]); 
 

 
console.log(sales);

正規表現/^(\d+).*/抽出します両方のフォーマットからの予約IDの関連部分を取得し、結果をデータ処理に直接送ります。

+0

私はTypeError:/ ^"(\ d +)。* /。exec(...)を取得しません。コンソール内でnullです。これは正規表現の検索入力がnullではないことを私は理解していません(チェックしました...) –

+0

@FredericBastiatこれは、正規表現に一致するものが見つからない場合に発生します([docs ]( 'https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#Return_value)))' .exec() 'が' null'を返すときこれはそうではありません実際に*すべての*あなたの 'BookingID'sはあなたがリストアップした2つのフォーマットに従っていましたもし他のフォーマットやヌル値があればそれも考慮に入れる必要があります – altocumulus

+0

私は洞察に感謝します。データをもう少し見て、何が起こっているのか見てみましょう。 –

関連する問題