2016-01-28 23 views
-1

有沒有辦法快速確定爲什麼兩個.csv文件應該是可以互換的?如何有效地確定兩個.csv文件之間的顯着差異

就像差異/驗證類型機制的關鍵評估。

我有我想要做一些可視化數據的d3.js地圖,當我用我initial data set它完美的作品,但在new set I created其與Uncaught RangeError: Maximum call stack size exceeded錯誤崩潰。

我最初的猜測是:

  • ,因爲頭被命名爲differently-也許這就是問題 - >但是他們爲了生成是彼此,所以我懷疑這個兼容。

  • 新的比舊的更大一點,可以嗎?

不幸的是,我不是很熟悉web開發,也不符合大ISH數據集這個以自然我一直在四處尋找一個解決方案的工作,但我似乎無法弄清楚。

+1

無法看到您的代碼時發生了什麼。我注意到新的CSV在逗號前有空格(這將成爲代碼中字段名稱的一部分),所以這可能是需要看的東西。 –

+0

刪除它的方法是什麼?與正則表達式? 'perl'什麼的? –

+2

再一次,這取決於你在做什麼。你可以正確地處理這個問題,或者根本不重要。 –

回答

2

處理任務的正確方法是將兩個CSV文件標準化(例如,使用其中一個csv2tsv工具),然後進行比較。假設字段以相同的順序,比較可能在bash環境中完成,像這樣:

diff <(sort FILE1.tsv) <(sort FILE2.tsv) 

(或者你可能想使用-bw選擇:DIFF-Bw ....)

如果幸運的話,你也許可以跳過正常化的步驟,只需運行獲得一些洞察差異:

diff <(sort FILE1.csv) <(sort FILE2.csv) 

如果列不是以相同的順序,那麼你會很明顯在執行diff之前必須重新排列它們。如何做到這一點部分取決於你沒有提供的一些細節(關於CSV文件)。

1

對於CSV(或標準化)文件的高級視圖,查看字段數量的直方圖通常很有用,實際上您的ANCIENT和X .csv文件就是如此。將它們轉換爲.tsv後,字段數量的直方圖明顯不同。

$ awk -F\\t '{print NF}' X.tsv | sort -n | histogram 
9 57260 ########################################################## 
10 3080 =============================== 
11 2090 ===================== 
12 1103 =========== 
13 632 ======= 
14 304 ------------------------------ 
15 69 ------ 
16 116 ----------- 
17 42 ---- 
18 17 - 
19 10 - 
21 2 

$ awk -F\\t '{print NF}' ANCIENT*.tsv | sort -n | histogram 
88 12633 ############# 

:下面,它們被用在不需要在這裏詳細描述的,除了注意直方圖中的每一行示出了反映該頻率的值,它的頻率,和水平杆的格式水平地顯示很明顯,ANCIENT文件是格式良好的矩形CSV文件,而X文件具有不同的格式。它看起來像X文件有一個分層佈局,「,」作爲字段分隔符和「|」作爲子字段分隔符。

相關問題