Daten in Jmp importierenHallo,
Ich entwickle eine JMP-Analyse für periodische Daten. Ich habe ein Excel-Makro, das jede Woche eine neue CSV-Datei in einem bestimmten Ordner generiert. Ich bin immer noch ein sehr einfacher JMP-Spieler und habe daher die Unterstützung der Community benötigt, um mir beim Erstellen eines Skripts für diese Aktivität zu helfen. Ich habe versucht, herumzusuchen, aber keine Lösung gefunden. Die CSV-Datei hat 19 Spalten mit Kopfzeile. Ich kann die Kopfzeile aus der CSV-Datei entfernen, wenn das ein Problem darstellt. Kann mir jemand mit einer Codelösung für ein Skript helfen, das mir hilft, Dateien automatisch in die übergeordnete Datentabelle in JMP zu importieren, damit ich andere Skripts ausführen kann, die nur Daten auswerten können?
Betreff: Daten in Jmp importierenDanke für die Antwort, txnelson. Dies ist, was in der Protokolldatei für „Online Trend Data Aggregated“ steht. (Dies ist die Datei, die geöffnet wird, wenn ich das Skript ausführe)
/*:
//:*/
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
/*:
Scriptable[]Betreff: Daten in Jmp importierenWelche Anweisungen erhalten Sie im Protokoll, wenn Sie die Datei einfach ausführen und nicht den Debugger verwenden?Betreff: Daten in Jmp importierenHallo,
Ich suche die gleiche Lösung wie das Originalplakat!
Ich habe dieses Skript kopiert und an meine Bedürfnisse angepasst (einschließlich eines Vorschlags oben, das Importskript aus JMP selbst zu kopieren und anstelle der ursprünglichen Lösung einzufügen).
...Aber es funktioniert aus irgendeinem Grund nicht.
Das Skript öffnet die JMP-Datei „Online Trend Data Aggregated“, stoppt dann und führt nichts aus. Was soll danach passieren?
Der Debugger durchläuft das Ganze und die einzige Meldung, die ich erhalte, ist in der oberen rechten Ecke und lautet „Programmausführung beendet“.
Jeder Einblick wird sehr geschätzt. Skript unten:
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored on a network drive)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
Betreff: Daten in Jmp importieren@cwillden
Das hat wunderbar geklappt, ich weiß Ihre Unterstützung wirklich zu schätzen. Damit konnten Hunderttausende Zeilen, die ich in einzigartigen CSV-Dateien habe, innerhalb von Sekunden verarbeitet werden. Danke!!!Betreff: Daten in Jmp importierenHier ist ein Beispiel, wie Sie das tun könnten.Nehmen wir an, die CSV-Datei enthält zwei Spalten, X1 und X2.Ich erstelle 2 Beispiel-CSV-Dateien („29.03.18 – Meine Daten.csv“ und „05.04.18 – Meine Daten.csv“).Ich habe auch eine laufende JMP-Tabelle, die ich im selben Verzeichnis wie die CSV-Dateien gespeichert habe.
Das folgende Skript sucht im Verzeichnis nach allen Dateien und filtert alle Nicht-CSV-Dateien und Dateien ohne „Meine Daten“ im Dateinamen heraus.Anschließend wird das aktuellste Datum der Dateien erfasst, die bereits in die laufende Tabelle importiert wurden.Anschließend durchläuft es die Liste der Dateien, die die vorherigen Kriterien erfüllen, und extrahiert die Daten aus dem Dateinamen.Wenn das Datum größer ist als das maximale Datum aus der laufenden Tabelle, wird diese Datei in eine Liste von Dateien eingefügt, die an die laufende Tabelle angehängt werden.
Danach durchläuft es die Dateien, von denen wir festgestellt haben, dass sie angehängt werden müssen, indem es sie zunächst öffnet, dann eine Spalte „Dateidatum“ hinzufügt und die Datei dann mit der laufenden Tabelle verkettet.
//Define function to open up your CSV files - will need to be modified for your own CSV file
MyCSVImporter = Function({filepath},
Open(
filepath,
columns(
New Column( "X1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "X2", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
//Define path to where csv files are stored
path = "$DOCUMENTS/temp/";
//Open Running Table (RunningTable.jmp) - assuming in same directory as CSV files (could change path to wherever)
dt_running = Open(path||"RunningTable.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .csv or do not contain "My Data" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".csv") == 0 | contains(files[i],"My Data") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"<BR />
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
<BR />//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = MyCSVImporter(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
In diesem Beispiel enthält RunningTable bereits die Daten vom 29.03.18, sodass nur die Daten vom 05.04.18 angehängt werden.
Betreff: Daten in Jmp importierenDanke!
@uday_guntupalli Ja, die Daten haben immer das gleiche Format, die gleiche Anzahl von Spalten und die gleichen Überschriften.
Ich habe bereits einmal Daten in JMP importiert. Die Frage besteht darin, diese Daten wöchentlich automatisch aus der neuen CSV-Datei zu aktualisieren, die generiert wird. Jede Woche wird eine neue CSV-Datei mit dem Dateinamen „ – Meine Daten“ generiert. Ich möchte, dass JMP diese Daten jedes Mal in meine übergeordnete Datei importiert. Wie kann ich einen Befehl für JMP schreiben, um automatisch in ein Ordnerverzeichnis zu wechseln, die neueste Datei aus der Liste auszuwählen, diese Daten zu importieren und sie in die laufende Tabelle einzufügen?
Betreff: Daten in Jmp importierenNur ein Punkt zur Klarstellung @uday_guntupalli Antwort:
Es wird eine solche Schnittstelle bereitstellen. Möglicherweise möchten Sie „Daten mit Vorschau“ wählen, damit Sie wissen, was Sie importieren, und diese anpassen können. Wenn Sie den Import abgeschlossen haben, gehen Sie zur importierten Datentabelle.Schauen Sie im Tabellenbereich links in der Datentabellenanzeige nach. Klicken Sie mit der rechten Maustaste auf das grüne Dreieck vor dem Element „Quelle“. Es wird eine Option zum „Bearbeiten“ angezeigt, in der Sie das von JMP generierte Skript sehen können.Anschließend können Sie dieses Skript ausschneiden und in die Anfänge einfügen, um Ihr wöchentliches Skript zu entwickeln.
Betreff: Daten in Jmp importierenHallo @NilD ,
JMP generiert das Skript für Sie, wenn Sie es beim ersten Mal manuell importieren können.Die resultierende Tabelle enthält ein Skript „Quelle“, das genau zeigt, wie die Daten mithilfe von JSL importiert werden.
Wenn JMP die CSV-Datei nicht korrekt importiert, gehen Sie wie folgt vor.Führen Sie wie gewohnt „Datei“ > „Öffnen“ (oder Strg + O) aus (ändern Sie die Dateitypen im Fenster „Datendatei öffnen“ bei Bedarf in „Textdateien“), navigieren Sie zur CSV-Datei und wählen Sie sie aus.Bevor Sie die CSV-Datei öffnen, sollten einige Optionsfelder angezeigt werden, die Ihnen verschiedene Optionen zum Öffnen der Datei bieten.Eine davon ist „Daten mit Vorschau“.Wenn Sie diese Option auswählen, haben Sie die Möglichkeit, die Importeinstellungen zu ändern, bevor Sie die Daten in JMP importieren.

Betreff: Daten in Jmp importieren@NilD ,
Werden die Dateien immer im gleichen Format vorliegen? dh gleiche Spaltennamen und gleiche Datentypen darin?
Am einfachsten ist es, JMP dazu zu bringen, Ihnen das Skript zum Importieren der Datei zur Verfügung zu stellen – so können Sie die Auswahl anpassen und das Skript wiederverwenden.
Datei ==> Öffnen ==> Wählen Sie die gewünschte Datei aus
Es wird eine solche Schnittstelle bereitstellen. Möglicherweise möchten Sie „Daten mit Vorschau“ wählen, damit Sie wissen, was Sie importieren, und diese anpassen können. Wenn Sie fertig sind, klicken Sie auf das grüne Dreieck. Es wird eine Option zum „Bearbeiten“ angezeigt, in der Sie das von JMP generierte Skript sehen können
