<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho provato a chiedere questo mese fa ma ero così perso che la mia spiegazione era incoerente. Poi sono stato trascinato in missione prima di essere in grado di spiegare. Quindi ecco il mio tentativo, spero, migliore di spiegare cosa voglio e cosa non funziona.
Cosa sto facendo: sto creando uno script che utilizza un set di dati di grandi dimensioni che cambierà costantemente, anche se i nomi delle colonne non lo faranno mai. Devo eseguire una varietà di riepiloghi e formule. La mia strategia è di fare alcune tabelle riassuntive per determinare quali categorie di dati ho. L'esempio sotto è un esempio grandioso e semplicistico di ciò che sto cercando di fare. Usa il grande file class.jmp e cerca le categorie di sesso. Dopo aver individuato le categorie, "M", "F", creerà nuove colonne per ogni categoria variabile, in questo caso denominato: Esempio-F quindi: Esempio-M e all'interno di ogni nuova colonna ci sarà una formula che fa riferimento ad altre colonne e calcola le righe facendo riferimento alla nuovissima colonna che si sta creando.
Il mio problema: non riesco a far funzionare i riferimenti di colonna, in particolare la variabile che sta invocando la stessa colonna con cui viene creata la formula . Vedi sotto
//inizio
prova (chiudi (dt, No save));
prova (chiudi (dt_categories, No save));
prova (chiudi (dt_data, No save));
clear globals ();
dt = Open (" Sentiero \ big_class.jmp ");
// Crea un elenco di genere e sostituisce i nomi. Nessun problema qui.
dt_categories = dt << Sommario (
Gruppo (: SEX),
formato nome colonna delle statistiche ("colonna"),
nome della tabella di output ("Gender_Summary"));
genderlist = dt_categories: sex << ottieni valori;
gendercount = nrows (dt_categories);
dt_data = dt << Dividi (Dividi per (: SEX), Dividi (: HEIGHT), Tabella di output ("Split_Big_Class"), Colonne rimanenti (Elimina tutto)
);
Per (i = 1, i <= gendercount, i ++,
// oldcol viene creato dalla lista di genere ma rappresenta i nomi delle colonne sul nuovo dt_data e la mia formula farà riferimento a tali nomi. Nessun problema qui.
oldcol = colonna (lista di genere );
// Devo nominare la nuova colonna diversa dalla precedente (vecchia) colonna altrimenti jmp incrementerà i nomi e sembra che rovinerà davvero i miei riferimenti ai nomi delle colonne. Nessun problema qui, non penso.
newcolname = ("Esempio-" || lista di genere );
// Successivamente, ho provato a creare prima la colonna in modo che la formula successiva possa fare riferimento a una colonna già esistente, ma non so se è necessaria.
newcol = dt_data << Nuova colonna ( newcolname , numerico);
// La riga successiva è una formula funzionale ma non usa le mie variabili come riferimento. Puoi usare per vedere cosa sto cercando di fare.
// newcolname << Formula (If (Row () == 1, 1 +: F,: Name ("Esempio-F") [Row () - 1, Empty ()] + 1));
// La riga successiva è la formula non funzionante perché ho cercato di inserire le mie variabili nella formula funzionante sopra. Questo è dove si stanno gettando errori.
newcolname << Formula (If (Row () == 1, 1 + oldcol , newcol [Row () - 1, Empty ()] + 1));
);
Eventuali suggerimenti? Sono abbastanza nuovo nello scripting e sto cercando di imparare mentre vado. GRAZIE!!!!!
Scusa, ho perso la tua linea che mostra quello che stavi cercando di produrre.
Prova questo:
dt1 = Open ("$ SAMPLE_DATA / Big Class.JMP");
riepiloga (categorie = per (: SEX));
dt2 = dt1 << Split (Split By (: SEX), Split (: HEIGHT), Output Table ("Split_Big_Class"), Column rimanenti (Drop All));
for (i = 1, i <= nItems (categorie), i ++,
dt2 << newColumn ("Esempio-" || categorie , personaggio, formula(
Se (Riga () == 1,
1 + asColumn (categorie ),
asColumn ("Esempio-" || categorie ) [Riga () - 1] + 1
);
);
);
);
Puoi spiegare a parole cosa vuoi che la tua formula produca, per favore?
Sembra che tu stia cercando di creare valori in base ai dati delle righe precedenti, aggiungendo man mano che vai?
Se elabori quello che vuoi che sia il risultato finale - con un esempio, se possibile, sarebbe fantastico.