Zeichenspalte in Datumsspalte ändern<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo zusammen,
Nehmen wir an, wir haben eine Tabelle mit einer Spalte vom Typ Zeichen mit Datumsangaben im Format „dmy“. Beispiel gegeben:
| Charakterdaten |
|---|
| 05.08.2015 |
| 17.03.2016 |
| 12.05.2016 |
Ich möchte jetzt die Zeichendaten in numerische Daten umwandeln. Ich weiß, dass dies ein häufiges Problem ist, über das es viel zu lesen gibt. Was ich jedoch nicht verstehe, ist Folgendes:
Wenn ich mit der rechten Maustaste auf die Spalte klicke, zu den Spalteninformationen gehe, den Datentyp in „Numerisch“ ändere und dann „dmy“ als Format auswähle, ist alles in Ordnung. Alle Daten werden korrekt konvertiert. Aber wenn ich das folgende Skript ausführe:
Column("Character Dates") << Data Type(numeric) << Informat("dmy") << Format("dmy");
oder
Column("Character Dates") << Datentyp(numerisch) << Format("dmy");
nur die 1. und 3. Zeile werden korrekt konvertiert. Die 2. Zeile unserer Beispielspalte ist danach null, vermutlich weil das Format fälschlicherweise als „mdy“ interpretiert wird.
Wie ist es möglich, dass diese Ansätze (Skript/Handbuch) zu unterschiedlichen Ergebnissen führen? Und was kann ich tun, damit der Skriptansatz funktioniert?
Danke schön!
Betreff: Zeichenspalte in Datumsspalte ändernJMP verwendet bei Informat nicht immer das MDY-Format.
Es verwendet das MDY-Format, wenn das erste Datum in der ersten Zeile zum MDY passt – unabhängig davon, was in den verbleibenden Zeilen steht.
Wenn die erste Zeile nur in das dmy-Format passt, wird stattdessen dieses Format verwendet. Beim Testen scheint also möglicherweise alles in Ordnung zu sein, bis die importierte Zeile in das mdy-Format passt ... In den USA ist dies natürlich kein Problem, da alle Daten in MDY sind
Dies ist in JMP 15.1.0 immer noch der Fall und ich hoffe, dass dies irgendwann behoben wird, da die Arbeit mit importierten Daten in JMP immer noch mühsam ist, obwohl es bei .csv- und Excel-Importen einige Verbesserungen gegeben hat.
Betreff: Zeichenspalte in Datumsspalte ändernVielen Dank, MS. Das „Locale Date“ hat den Zweck erfüllt. Es gibt jedoch immer noch die For Each-Schleife. Aber ich werde dafür bezahlen, eine andere Lösung zu finden.
Mittlerweile haben wir herausgefunden, dass es wichtig ist, den entsprechenden ODBC-Treiber zu installieren, wenn Sie numerische Daten aus einer MS SQL-Datenbank nach JMP übertragen möchten. Mit dem „SQL Server“-Treiber konnten wir keine numerischen Daten importieren, mit dem „ODBC-Treiber 11 für SQL Server“ jedoch schon.
Betreff: Zeichenspalte in Datumsspalte ändernSehr sehr nett
Betreff: Zeichenspalte in Datumsspalte ändernDu könntest es versuchen Datum des Gebietsschemas Format.
Column("Character Dates") << Data Type(numeric) << Format("Locale Date");
Betreff: Zeichenspalte in Datumsspalte ändernVielen Dank für Ihre Antwort, Nelson. Ich führe das Skript aus und habe gerade Zeitstempel in der Spalte „Charakterdaten“ erhalten. Allerdings verstehe ich nicht, warum JMP den Format-Befehl ignoriert. Mein System: JMP 12.2.0 unter Windows 7 in Deutschland (UTC+1; dmy).
Derzeit versuche ich, For Each Row-Schleifen für ein Skript zu vermeiden, das automatisch alle Zeichenspalten mit Datumsangaben in numerische Datumsangaben umwandelt. Ich habe eine solche Lösung, aber sie ist einfach sehr langsam. Daher meine Frage oben.
Betreff: Zeichenspalte in Datumsspalte ändernAnscheinend gibt es in JSL ein Problem mit der korrekten Durchführung der Konvertierung.Es scheint immer „m/d/y“ als Informationsformat zu verwenden.Das folgende Skript führt die Konvertierung durch
Namen standardmäßig hier ( 1 ) ;
Versuchen ( Schließen ( Datentabelle ( "prüfen" ) , nosave ) ) ;
dt = Neuer Tisch ( "prüfen" ,
Zeilen hinzufügen( 3 ) ,
Neue Spalte ( „Charakterdaten“ ,
Charakter ,
„Nominal“ ,
Werte festlegen( { „05.08.2015“ , „17.03.2016“ , „12.05.2016“ } )
)
) ;
Für jede Reihe (
: Charakterdaten = Substr ( : Charakterdaten , 4 , 2 ) || "." ||
Substr ( : Charakterdaten , 1 , 2 ) || "." || Substr ( : Charakterdaten , 7 )
) ;
Spalte ( „Charakterdaten“ ) << Datentyp (numerisch) << Format ( „t/m/j“ ) ;