Sostituzione di una riga vuota con un'altra riga di dati con un'istruzione ifCIAO,
Ho un set di dati originale (tabella1) e sto cercando di inserirlo nel risultato nella tabella 2.
Se qualsiasi numero inferiore a 300, stamperà la stringa "tipo1" nella colonna "risultato1".
Se qualsiasi numero è superiore a 300, stamperà la stringa "tipo2" nella colonna "risultato2".
| Numero |
tipo 1 |
tipo2 |
risultato1 |
risultato2 |
| 100 |
a1 |
a2 |
|
|
| 200 |
b1 |
b2 |
|
|
| 150 |
c1 |
c2 |
|
|
| 275 |
d1 |
d2 |
|
|
| 555 |
e1 |
e2 |
|
|
| 424 |
f1 |
f2 |
|
|
| 572 |
g1 |
g2 |
|
|
| 783 |
h1 |
h2 |
|
|
| 125 |
i1 |
i2 |
|
|
Tabella 1: dati originali
| Numero |
tipo 1 |
tipo2 |
risultato1 |
risultato2 |
| 100 |
a1 |
a2 |
a1 |
|
| 200 |
b1 |
b2 |
b1 |
|
| 150 |
c1 |
c2 |
c1 |
|
| 275 |
d1 |
d2 |
d1 |
|
| 555 |
e1 |
e2 |
|
e2 |
| 424 |
f1 |
f2 |
|
f2 |
| 572 |
g1 |
g2 |
|
g2 |
| 783 |
h1 |
h2 |
|
h2 |
| 125 |
i1 |
i2 |
i1 |
|
Tabella 2: risultato
Finora, quello che ho fatto sul mio script è mostrato di seguito.
dt = Current Data Table();
dt << New Column("result1",
Character,
"Nominal",
For Each Row(If(:Number << 300), :result1 == :type1, "")
);
dt << New Column("result2",
Character,
"Nominal",
For Each Row(If(:Number >> 300), :result2 == :type2, "")
);
Modellazione statistica avanzataAutomazione e scriptingPersonalizzazione di massaCondivisione e comunicazione dei risultatiRi: Sostituzione di una riga vuota con un'altra riga di dati con un'istruzione ifPersonalmente trovo che affrontare problemi come questo utilizzando un approccio simile a Excel, in cui le nuove colonne vengono create con formule individuali applicate a ciascuna colonna, sia confuso e inefficiente.La capacità di JMP di modificare direttamente i valori della tabella dati nel codice JSL "aperto" può essere utilizzata per risolvere il problema in modo più chiaro ed efficiente.
// Create the new columns
dt << New Column( "result1", Character );
dt << New Column( "result2", Character );
// Populate the columns
For Each Row( If( :Number < 300, :result1 = :type1, :result2 = :type1 ) );
Ri: Sostituzione di una riga vuota con un'altra riga di dati con un'istruzione ifCiao jthi, va bene, proverò le informazioni di aiuto. La sceneggiatura funziona. Grazie per l'aiuto.
Ri: Sostituzione di una riga vuota con un'altra riga di dati con un'istruzione ifCi sono un paio di problemi, usando >>/<< come confronto e usando For Each Row all'interno della creazione di colonne. Di seguito è riportata un'opzione per lavorare la sintassi utilizzando << Imposta ogni valore (non che se il valore è esattamente 300 sarà vuoto)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Number", Numeric, "Nominal", Format("Best", 9), Set Values([100, 200, 150, 275, 555, 424, 572, 783, 125])),
New Column("type1", Character(16), "Nominal", Set Values({"a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1"})),
New Column("type2", Character(16), "Nominal", Set Values({"a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", "i2"}))
);
dt << New Column("result1", Character, "Nominal", << Set Each Value(
If(:Number < 300,
:type1
, //else
""
)
));
dt << New Column("result2", Character, Nominal, << Set Each Value(
If(:Number > 300,
:type2
, //else
""
)
));
Consiglio vivamente di controllare l'indice di scripting direttamente dal menu Guida di JMP e Guida allo scripting dalla pagina della guida di JMP .Esistono anche altre fonti di scripting come
Introduzione al linguaggio di scripting JMP per conoscere la sintassi