In un ciclo come indicare l'altra colonna che [I]Ciao.
Ancora una volta devo chiedere aiuto. Ho scritto uno script che calcola la percentuale di variazione tra i valori di una colonna numerica e quella successiva. Sfortunatamente ricevo un errore: "Colonna 1897_Canvi Formula interrotta
Impossibile convertire l'argomento in un numero [o matrice] 1 volte Alle righe: {1} Operazione: Sottrai, numericColNames [X] - numericColNames [i]
Gli errori di valutazione della formula sono stati ignorati "
Questi sono numericColNamesn:
{"_1842 _", "_ 1877_", "_1887_", "_1897_", "_1900_", "_1910_", "_1920_", "_1930_", "_1940 _", "_ 1950_", "_1960_", " _1970_ "," _1981_ "," _1991_ "," _2001_ "," _2011_ "," _2018_ "}
Questo è lo script in questione:
Names Default To Here( 1 );
dt = Current Data Table();
numericColNames = dt << get column names( string, numeric );
For( i = 2, i <= N Items( numericColNames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( numericColNames[i] ) || "_Canvi",
Numeric,
Continuous,
Format( "Percent", 12, 1 ),
X = i - 1,
Formula( (numericColNames[X] - numericColNames[i]) / numericColNames[X] )
)
),
Expr( __col__ ), Parse( ":Name (\!" " || numericColNames[i] || "\!")" )
)
)
);Ri: In un ciclo come indicare l'altra colonna che [I]Non si imposta correttamente la funzione Substitute ().
Sostituisci e sostituisci con
La funzione Substitute () restituisce una copia di una stringa con un'espressione sostitutiva. Il
La funzione Substitute Into () modifica la stringa originale con un'espressione sostitutiva.
Ad esempio, considera il seguente script:
str1 = str2 = "All things considered";
str3 = Substitute( str1, "All", "Some" );
// str3 holds the result of the Substitute, and str1 is not changed
str4 = Substitute Into( str2, "All", "Some" );
// Substitute Into returns nothing, so str4 is missing, and str2 is changed
// and now holds the result of Substitute Into
Show( str1, str2, str3, str4 );
Questo script restituisce il seguente output:
str1 = "Tutto considerato";
str2 = "Alcune cose considerate";
str3 = "Alcune cose considerate";
str4 =.;
Ho rielaborato la tua sceneggiatura, per quello che immagino sarà quello che vuoi
Names Default To Here( 1 );
dt = Current Data Table();
numericColNames = dt << get column names( string, numeric );
For( i = 2, i <= N Items( numericColNames ), i++,
Eval(
Substitute(
Expr(
New Column( Char( numericColNames[i] ) || "_Canvi",
Numeric,
Continuous,
Format( "Percent", 12, 1 ),
X = i - 1,
Formula( (__colX__ - __coli__ / __colX__ )
)
),
Expr( __coli__ ), Parse( ":Name (\!" " || numericColNames[i] || "\!")" ),
Expr( __colX__ ), Parse( ":Name (\!" " || numericColNames[X] || "\!")" )
)
)
);
La documentazione della funzione Substitute () è stata copiata dalla Guida agli script
Guida ==> Libri ==> Guida agli script
Ri: In un ciclo come indicare l'altra colonna che [I]Prima di tutto, grazie per il tuo aiuto. Quando eseguo il tuo script ottengo l'errore:
Nel seguente script, errore contrassegnato da / * ### * /
Sostituisci / * ### * / (Expr (...
Questa parte della sceneggiatura è stata suggerita in un post precedente poiché il nome delle colonne era un numero intero come il 1980. Il sostituto potrebbe essere eliminato se invece del 1980 fosse "_1980_".
Cosa fanno gli operatori "\!" dopo ": Nome".
Grazie ancora per i tuoi insegnamenti.
Ri: In un ciclo come indicare l'altra colonna che [I]Il nome della colonna del 1980 causa un problema che viene risolto inserendo un: Nome ("1980") attorno alla specifica della colonna. Non è il motivo per cui viene utilizzata la funzione Substitute (). La funzione Substitute () è lì, perché non si desidera che la formula salvata per la colonna abbia il valore
(numericColNames[X] - numericColNames[i]) / numericColNames[X] )
ma piuttosto per avere il valore
( __1980__ - __1960__ / __1980__ )
Se la formula ha la prima sintassi che ho specificato, significa che la formula fallirà non appena la sessione JMP modifica uno dei valori per: i, X, numericColNames. In altre parole, se si salva la tabella dei dati, si termina la sessione JMP e quindi si riavvia JMP, nessuna delle variabili i, X o numericColNames sarà nella nuova sessione JMP, in modo che quando si apre la tabella dei dati, tutti delle colonne che hanno formule che fanno riferimento a tali variabili falliranno.
Infine, non sono sicuro di quale sia il problema attualmente riscontrato. Se potessi fornire un campione dei tuoi dati, avrò almeno la possibilità di capire il problema.
Ri: In un ciclo come indicare l'altra colonna che [I]Ciao di nuovo. Quello che intendo è calcolare la variazione percentuale del numero di abitanti nei successivi censimenti che sono stati effettuati nel tempo nei comuni della provincia di Teruel (Spagna). La mia intenzione è di confrontare un censimento con il seguente censimento. Nella prima colonna della tabella dei dati che allego (parziale) sono registrati i nomi dei comuni, nei successivi sei gli abitanti di ciascun comune compaiono nei diversi censimenti. Per calcolare il tasso di cambio, calcolo la differenza tra un censimento e il successivo, il risultato viene diviso per il primo censimento e quindi esprimo il valore ottenuto in percentuale. cioè (_1842_ - _1877_) / _1842_
