Zusammenführen von Werten aus zwei Spalten in eine (gemischte numerische und Zeichenwerte)Hallo
Ich habe zwei Spalten, eine mit numerischen Werten und eine mit Zeichenfolgen.
Ich möchte eine dritte Spalte erstellen, die den numerischen Wert annimmt, wenn der Zeichenfolgenwert „parametrisch“ ist, und den Zeichenfolgenwert, wenn dies nicht der Fall ist.
Ich habe dies versucht, erhalte jedoch die Fehlermeldung „Die Spalte TEST_RESULT erfordert numerische Werte“, obwohl sie als Spalte vom Typ „Zeichen“ definiert ist.
Ich verwende JMP15, falls das wichtig ist.
col_test_result =dt <
<NEW column=""></NEW>
Later on I want to split this column so the output table will have either numeric or character type data, will JMP be able to set it to numeric based<BR />on the contents although the source column was character?
<BR /><BR />
<LINGO-LABS id="lingo-labs-536312" slang="en-US" mode="UPDATE">
<LINGO-LABEL>Erweiterte statistische Modellierung</LINGO-LABEL>
<LINGO-LABEL>Inhaltsorganisation</LINGO-LABEL>
<LINGO-LABEL>Datenzusammenführung und -bereinigung</LINGO-LABEL>
<LINGO-LABEL>Massenanpassung</LINGO-LABEL>
<LINGO-LABEL>Qualitäts- und Prozesstechnik</LINGO-LABEL>
<LINGO-LABEL>Ergebnisse teilen und kommunizieren</LINGO-LABEL>
</LINGO-LABS>
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Sie müssen die Funktion Char() verwenden, um die numerischen Daten in Zeichen umzuwandeln
col_test_result = dt << New Column( "TEST_RESULT", Character );
dt_subset:TEST_RESULT << set formula( If( :COMMENTS == "Parametric", Char( :NUMERIC_RESULT ), :COMMENTS ) );
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Sie können keine gemischten Werte in einer Spalte haben. Sie könnten Char() um Ihr :NUMERIC_RESULT hinzufügen, wenn es sich um numerische Werte handelt
Column(dt_subset, "TEST_RESULT") << set formula(If(:COMMENTS == "Parametric", Char(:NUMERIC_RESULT), :COMMENTS));
Und wenn Sie die Spalte teilen, stellen Sie einfach den Datentyp auf den gewünschten Wert ein. Beachten Sie, dass, wenn Sie Zeichenwerte in der numerischen Spalte haben, diese in fehlende geändert werden.
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Vielen Dank ! Das Hinzufügen von 'char()' löste das erste Problem.
Aber jetzt - ich habe 2 andere Probleme, nachdem ich die zusammengeführte Spalte geteilt habe.
Ich teile es durch eine andere Spalte, sodass die resultierenden Spalten alle einen Datentyp haben (Zeichenfolge oder numerisch), es gibt ~ 150 verschiedene Spalten.
Die Probleme :
1. Alle geteilten Spalten sind immer noch mit der ursprünglichen Formel aus der zusammengeführten Spalte. Wie mache ich die Quellspalte zu einem Wert (wie in Excel - speical einfügen, Werte).
2. Alle geteilten Spalten werden als Zeichentyp generiert, und das wollte ich nicht, ich möchte, dass sie basierend auf ihrem Inhalt einen automatischen Typ erhalten, genau wie
Wenn ich eine CSV-Datei öffne, legt JMP den Typ automatisch fest. Wenn also alle Werte in einer Spalte numerisch sind, erhält sie einen numerischen Typ.
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Hier ist ein kleines Stück Code, das eine Datentabelle durchgeht und jede Zeichenspalte, die aus allen gültigen numerischen Werten besteht, in einen numerischen Datentyp konvertiert;
Names Default To Here( 1 );
dt = Current Data Table();
For Each( {value, index}, dt << get column names( string ),
If( Column( value ) << get data type == "Character",
vals = Column( value ) << get values;
nonMissing = Col Number( As Column( value ) );
Column( value ) << set data type( numeric ) << modeling type( continuous );
If( nonMissing != Col Number( As Column( value ) ),
Column( value ) << set data type( character ) << set values( vals )
);
)
);Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Vielen Dank ! das sieht genau so aus, wie ich es brauche, aber leider funktioniert es nicht.
Ich habe versucht zu debuggen - die erste Zeile funktioniert - eine Liste der Spaltennamen zu erhalten.
Der zweite erhält den folgenden Fehler. irgendeine Idee?

Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Nur als Kommentar:
Es ist keine Einschränkung, aber es ist die grundlegende Denkweise von JMP, dass jede Spalte einen definierten Datentyp hat, den Sie aktiv nach Ihren Bedürfnissen festlegen können.
Der Datentyp macht, wenn er einmal richtig eingestellt ist, folgende Analysen so einfach durchführbar.
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Ich denke, Sie verwenden < Version 16, also müssen Sie die std "For" -Syntax verwenden, siehe
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// JMP16 "For Each"
dt << get column names( string );
For Each( {value, index}, dt << get column names( string ), Print( value ) );
// JMP <16 "For"
col_lst = dt << get column names( string );
For( i = 1, i <= N Items( col_lst ), i++,
Print( col_lst[i] )
);
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)
Danke es funktioniert jetzt!
jetzt nur noch eins - wie werde ich die originalformel wieder los? Ich möchte nur den resultierenden Wert der Formel, ist das möglich?
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)
gut irgendwie funktioniert.. Ich habe ein Problem gefunden. Es gab eine Spalte mit dem Datentyp 'char', die einen festen Zeichenfolgeninhalt hatte: "R001"
Nach dem Ausführen des Skripts ändert es sich in einen numerischen Typ mit dem Wert '1'. Warum passiert das?
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)Das R gefolgt von einem rein numerischen Wert wird von JMP als Währung interpretiert.Die Notation des südafrikanischen Rands hat folgende Form: R123 oder R55,67 usw. JMP interpretiert sie also als numerische Werte.Sie könnten dem Code ein Häkchen hinzufügen, um nach dieser Ausnahme zu suchen.
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)
wow das hab ich nicht kommen sehen
vielen Dank für deine Hilfe!
Betreff: Werte aus 2 Spalten zu einer zusammenführen (gemischte Zahlen- und Zeichenwerte)JMP 17 hat ein optionales Argument für num("R001", < ), um dieses Verhalten zu verhindern.