Transponieren einer sehr großen DatentabelleHallo,
Ich habe eine sehr große Datendatei (über 20 Millionen Zeilen, 10 Spalten), die ich transponieren muss. Leider ist jmp nicht in der Lage, eine so große Datei schnell oder effizient auszuführen. Ich habe festgestellt, dass jmp Daten im Textformat sehr einfach manipulieren kann. Ich habe alle Optionen zum Speichern/Öffnen als .txt ausprobiert, aber ohne Erfolg.
Kann jemand helfen, diese Tabelle entweder im TXT-Format oder in einer Datentabelle (Liste, Array usw.) zu transponieren?
Ich brauche die folgende Beispieltabelle, um wie die Ausgabe unten auszusehen, ohne die Funktion "Transponieren" zu verwenden da es für mehr als Millionen Zeilen nicht funktioniert: ''
Datentabelle :
Spalte1 Spalte2
ein l
s w
4j
t sdf
T
Ö
P
Gewünschte Ausgabe (entweder als txt-Datei oder als Tabelle mit nur 1 Spalte und 2 Zeilen):
col1, a,s,4,t,t,o,p
col2,l,w,j,sdf
Bitte und Danke 
Re: Wie konfiguriere ich Python für JMP 14?Wenn Sie den Python-Speicherort angeben, z
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib"),
Verwenden Sie die Python-Version ("3.7")
);
Sie geben an, dass dies die spezifische Version von Python ist, die Sie verwenden möchten und die sich an der von Ihnen angegebenen Stelle befindet. Wenn Sie Ptyhon Init() ohne Argumente oder mit weniger Argumenten wie Python Init(Use Python Version(„3.7“) aufrufen, führt JMP mehr Suchvorgänge durch, um zu versuchen, ein geeignetes Python zu finden. Auf dem Mac müssen Sie wahrscheinlich immer mindestens die Version angeben, da Apple Python 2.7 mit dem Betriebssystem ausliefert. Wir arbeiten weiterhin an der Verbesserung der Python-Unterstützung in JMP.
Re: Wie konfiguriere ich Python für JMP 14?@Paul_Nelson , aufbauend auf dem letzten Beitrag von GM1:
Ausführen dieses Skripts:
Clear Log();
Names Default To Here( 1 );
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib"),
Use Python Version("3.7")
);
Python Submit("\[
print("Done importing modules")
]\");
Python Term();
gibt folgende Ausgabe im Log:

Ausführen dieses JSL-Skripts:
Clear Log();
Names Default To Here( 1 );
Python Init(Path("/Library/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib"),
Use Python Version("3.7")
);
Python Submit("\[
import numpy as np
print("Done importing modules")
]\");
Python Term();
gibt die folgende Ausgabe an das Protokoll aus:

Angesichts des erfolgreichen Exit-Codes denke ich, dass dieser Fehler sehr unklar ist. JMP/JSL scheint nicht zu wissen, wo Module zum Importieren zu finden sind. Jede Hilfe wird sehr geschätzt
Betreff: Sehr große Datentabelle transponierenDas ist großartig! Danke Craige für die großartige Unterstützung!
Betreff: Sehr große Datentabelle transponierenViele Möglichkeiten. Vielleicht so etwas, um den String nachzubearbeiten.
regex("a,b,c,,,,,,,", ",*$", "", GLOBALREPLACE)
/*:
"ABC"
Hier sind einige Informationen zur Charaktermanipulation:
http://www.jmp.com/support/help/Work_with_Character_Functions.shtml
https://community.jmp.com/t5/Uncharted/JSL-Character-String-Functions/ba-p/21323
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008
https://community.jmp.com/t5/Uncharted/Pattern-Matching/ba-p/21005
https://community.jmp.com/t5/Uncharted/Back-Reference/ba-p/21267
Betreff: Sehr große Datentabelle transponierenSehr cool danke. Obwohl es nützlich ist, wollte ich vor allem nur den String-Wert in die Zelle bekommen. Leider enthält die Zeichenfolge zusätzliche Kommatrennungen für leere Zellen.
dh. Da es 2 Spalten gibt, hat die 1. Spalte 10 Zeilen und die 2. Spalte enthält nur Daten für 5 Zeilen. Wenn ich die oben erwähnte Zeichenfolge concate implementiere, erhalte ich den Zeichenfolgenwert für die zweite Spalte als astring = "a,s,r,w,d,,,,,,"
Ich bin besonders daran interessiert, nur "a,s,r,w,d" zu erhalten, ohne die zusätzlichen Komma-Trennungen. Irgendwelche Richtungen, die Sie mir zeigen können? Ich würde es sehr zu schätzen wissen.
Danke schön,
Shiv
Betreff: Sehr große Datentabelle transponierenJa, http://www.jmp.com/support/help/Accessing_Data_Values.shtml#790448 hat ein Beispiel wie folgt:
dt:Alter[10] = 20; // Wert von Alter in Zeile 10 auf 20 setzen
Vielleicht möchten Sie einen Prototyp einer zweizeiligen Tabelle mit den Spaltennamen (und Datentypen!) Erstellen, die Sie benötigen, und das "Get-Skript" aus dem roten Dreieckmenü verwenden. Sie können dieses Skript dann in Ihren eigenen Code einfügen. Im obigen Beispiel steht [10] für Zeile 10; Sie könnten zwei Zuweisungen für [1] und [2] verwenden. Die 20 steht für eine numerische Spalte; Ihre Spalte ist ein Zeichen, wenn die Astring-Variable darin gespeichert werden soll.
Betreff: Sehr große Datentabelle transponierenSuper danke für die schnelle Antwort! Einfacher als ich dachte. 
Wie auch immer, ich kann eine bestimmte Zelle in einer Tabelle zuweisen, um diese Astring zu sein?
so, dass ich eine Tabelle habe, die (nach dem ursprünglichen Beispiel, das ich verwendet habe) 1 Spalte und 2 Zeilen hat, die wie folgt aussehen:
Spalte1
Reihe1: a,s,4,t,t,o,p
Reihe2: l,w,j,sdfBetreff: Sehr große Datentabelle transponierenIch denke, Sie haben nicht numerische Spalten, sodass Sie keine Matrix verwenden können. Sie können Ihren Zeichenfolgenwert als Verkettung von Elementen in einer Liste erstellen, und Sie können eine Liste aus einer Zeichenspalte mit der Nachricht <
alist = dt:a<<GETVALUES></GETVALUES>
N Artikel (Liste) = 21000000;
Länge (String) = 207635028;
Left(astring, 100) = "1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,";
JMP hat ein Limit von 2 Milliarden Zeichen für eine Zeichenfolge. Sie könnten sich nähern.