Leute,
Ich importiere Werte aus CVS-Dateien. Eine davon ist eine Zeichenfolge. JMP kann den Wert jedoch nicht lesen. Das erste Bild ist die CVS-Datei, in die alle Werte außer „FlexSEM1000“ importiert werden. Es gibt also keine Probleme. Das zweite Bild zeigt jedoch die JMP-Tabelle mit dem F????? Wert. Wie gehe ich dieses Problem an? Relevanter Code beigefügt.
Neil
Join_files = Expr(
For( i = 1, i <= N Items( path ), i+=2,
/*area, %area, and pore pixel count*/
jointable1 = Open( path[i] );
//jointable1 << Get Name;
samplename = Substr( jointable1 << Get Name, 1, 18 ); //sample replicate name //
samplename2 = Word(1,samplename, "_"); // Only sample name, no replicate suffix (i.e. a1, a2...)
jointable1 << New Column( "Sample",
Character,
Nominal,
Set Each Value( samplename ) // setting each row in column 1 to samp rep name //
);
/*diameter and pore pixel count*/
jointable2 = Open( path[i + 1] );
dt = Data Table( jointable1 ) << Join(
With( Data Table( jointable2 ) ),
Select( :Sample, :Area, :Name( "%Area" ),:scale, :thick, :pixelrad, :mag, :system),
SelectWith( :pixD1, :count1),
Cartesian Join
);
Close( jointable1, no save );
Close( jointable2, no save );
Columns();
Graphs();
Graphs2();
Graphs3();
dt << Set Name(samplename);
po = dt << get name;
dt << Save(SD1 || po);
);
);
Columns = Eval Expr(
//dt << New Column( "Condition", Character, Nominal, Set Each Value( "1:1" ) );
dt:Name( "%Area" ) << Set Name( "Image A pore area (%)", Numeric, Continuous );
dt:Area << Set Name( "Total Image pixel count (pore_part)", Numeric, Continuous );
dt:scale << Set Name("pix/mm scale", Numeric, Continuous);
dt:pixD1 << Set Name( "Pore Diameter (pixel)", Numeric, Continuous );
dt:count1 << Set Name( "Pore Pixel Count", Numeric, Continuous );
dt:thick << Set Name("d - thickness (m)", Numeric, Continuous);
dt:pixelrad << Set Name("LT Radius", Numeric, Continuous);
dt:mag << Set Name("Mag", Numeric, Continuous);
dt:system << Set Name("Image Mode", Character, Nominal);
dt:Sample << Set Display Width( 150 );

Craige,
Ich konnte zum Quellcode zurückkehren, der die CSV-Datei generiert hat, und habe das Problem gefunden. Alle Elemente in der Tabelle waren UTF-8, AUSSER das letzte interessierende Spaltenelement. Ich habe den Code korrigiert und jetzt funktioniert alles. Ich vermute, dass JMP sowohl UTF-8 als auch UTF-16 sah und die letzte Spalte nicht erkannte, da es bereits UTF-8 sah.
Vielen Dank für Ihre wertvolle Zeit.
Neil
Craige,
Schnelles Update.
Ich habe herausgefunden, dass JMP „FlexSEM1000“ erkennt, wenn ich die CSV-Datei manuell öffne und als „CSV UTF-8“ speichere. Dies ist jedoch ein manueller Schritt, den ich gerne eliminieren würde.
Neil
Craige,
Ich werde weitermachen. Ich habe versucht, das CSV-Dokument anzuhängen, für den Fall, dass jemand es zum Laufen bringen könnte, aber die Website ließ das Hochladen nicht zu.
In der Zwischenzeit gehe ich zu dem Programm, das die Datei generiert hat, um zu sehen, wie sie formatiert ist. Ursprünglich wurden die System-ID-Daten aus einer Systemtextdatei (zusammen mit Bildern von einem SEM) gelesen, die UTF16 war. Es wurde jedoch ein Skript geschrieben, um zu UTF8 zu wechseln und in einer CSV-Datei zu speichern.
Ich habe mir beide Typen von JMP ansehen lassen, aber ohne Erfolg.
Neil
Danke Craige,
Gemäß dem CVS-Wert „ FlexSEM1000", wenn ich das in „ändere“ FlexSEM ", JMP kann lesen ohne Probleme .
Ich werde mich anhand Ihrer Vorschläge umsehen.
Neil