2012-10-16 18 views
5

sagen, dass ich eine Beispieldatei sample.csv haben:Zeilen entfernen, wenn Daten D3 Lesen

row,col,value 
1,1,2 
1,2,3 
1,3,NA 

Wenn Daten in d3 Lesen tun Sie so etwas wie:

d3.csv("sample.csv", function(data) { 
    data.forEach(function(d) { 
    d.value = +d.value; 
}); 

jedoch für den NA-Wert + d.value wird NaN zurückgeben. Wie kann ich NaN-Werte von meinen Daten ausschließen? hole die Daten und nimm nur Zeilen, die einen Zahlenwert haben

Danke!

Antwort

6

Sie können isNaN auf die Daten aufrufen, bevor Sie versuchen, es zu addieren:

d3.csv('sample.csv', function(data) { 
    data = data.filter(function(d){ 
     if(isNaN(d.value)){ 
      return false; 
     } 
     d.value = parseInt(d.value, 10); 
     return true; 
    }); 
}); 

Dies setzt voraus, Ihre Zahlen alle Basis-10 ganze Zahlen sein.

+0

Danke für Ihre Antwort. Allerdings möchte ich die Zeile nicht behalten, wenn der Wert nicht numerisch ist. Ich möchte nur Zeilen mit nicht-NaN-Werten. Ihre Lösung wird die Zeile behalten, aber den numerischen Wert durch eine leere Zeichenfolge ersetzen. – by0

+0

Ah, in diesem Fall sollten Sie etwas wie '.filter' anstelle von' .forEach' verwenden. Ich werde meine Antwort bearbeiten. – JasonWyatt