Crea e popola nuove categorie basate su colonne in una colonna esistenteCiao,
Sto cercando di creare una query rapida in cui viene utilizzata una colonna categorica (test_article) per creare una serie di colonne che contiene solo un sottoinsieme delle informazioni. Se lo script funziona come previsto, la tabella finirà con 2 nuove colonne (PBS vs ...).
| test_articolo | misurazione | PBS contro 709547 | PBS contro 709139 |
| P.B.S | 1.23 | P.B.S | P.B.S |
| P.B.S | 1.456 | P.B.S | P.B.S |
| 709547 | 4.56 | 709547 | ESCLUDERE |
709139 | 5.02 | ESCLUDERE | 709139 |
| 709139 | 6.02 | ESCLUDERE | 709139 |
| 709547 | 4.57 | 709547 | ESCLUDERE |
Ho provato il seguente script:
NamesDefaultToHere(1);
dt=current data table();
row = Associative Array( :test_article ) << Get Keys;
nc=N items (row);
For( i = 1, i <= nc, i++,
new column("PBS vs "|| row[i],"Character", "Nominal", Formula(If( :test_article == "PBS", :test_article,
If( :test_article == row[i],
"test",
"EXCLUDE"
)
))));In qualche modo, non popola alcun valore nelle nuove colonne ad eccezione di "PBS".
Eventuali suggerimenti?
Molte grazie
Sebastiano
Oggetto: Crea e popola nuove categorie basate su colonne in una colonna esistenteFunziona anche come un fascino.
Molte grazieOggetto: Crea e popola nuove categorie basate su colonne in una colonna esistenteFunziona come un fascino!
GrazieOggetto: Crea e popola nuove categorie basate su colonne in una colonna esistenteDevi inserire il valore di row[i] nella formula. JMP non valuta le espressioni all'interno della parte Formula() del messaggio New Column().
Puoi usare Sostituire() per ottenere il valore effettivo di row[i] nella formula.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Substitute(
Expr(
New Column( "PBS vs " || row[i],
"Character",
"Nominal",
Formula( If( :test_article == "PBS" | :test_article == ri, :test_article, "EXCLUDE" ) )
)
),
Expr( ri ), Eval( row[i] )
)
)
);
Oggetto: Crea e popola nuove categorie basate su colonne in una colonna esistenteIl problema principale che stai riscontrando è che all'interno della definizione di una formula non è possibile avere elementi che devono essere valutati.JMP pensa che tutto all'interno della definizione della formula debba essere valutato solo quando la formula viene eseguita.
Pertanto, la formula che viene passata nella definizione Nuova colonna deve essere completa nella sua sintassi.La modifica del tuo codice qui sotto funziona con la tua tabella di dati di esempio.
Names Default To Here( 1 );
dt = Current Data Table();
row = Associative Array( :test_article ) << Get Keys;
nc = N Items( row );
For( i = 1, i <= nc, i++,
Eval(
Parse(
"New Column( \!"PBS vs " || row[i] ||
"\!",
Character,
Nominal,
Formula(
if (Row() == 1, theTest = \!""
|| row[i] ||
"\!");
If( :test_article == \!"PBS\!",
zip=:test_article,
If( :test_article == theTest,
zip=\!"test\!",
zip=\!"EXCLUDE\!"
)
);
zip
)
)
);"
)
)
);
