Lavori con le righe escluse?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Ho due colonne.Nella prima colonna (Sito) ha accanto il numero 1 o 2.Nella seconda colonna ci sono alcuni valori numerici.
Ho creato una funzione che calcola il rango e il percentile.Innanzitutto, la funzione calcola in una nuova colonna il rango e il percentile.Quindi la funzione seleziona tutte le righe che hanno il valore 1 nel sito 1 e le conta.Quindi seleziona ed esclude tutte le righe con il valore 2 nella colonna del sito e quindi calcola il rango e il percentile in un'altra colonna.Tutto questo sta funzionando.
Il problema si presenta quando voglio calcolare il rango e il percentile dopo aver selezionato ed escluso le righe con il valore 2 nella colonna Sito.Non restituisce alcun errore, ma non sono presenti valori nella colonna.Presumo che ciò abbia a che fare con l'espressione esclude() nella mia formula.Se rimuovo l'istruzione if da F3 in modo che sia esattamente come F, ottengo gli stessi valori della colonna accanto, ma se mantengo F3 così com'è, nessun valore!
Cosa mi manca?Scusate se è molto ovvio...
rpFunction = Funzione ( { riga , test } ,
//riga --> quante righe (dispositivi) ci sono nella tabella dati?
//test --? per quale test stiamo calcolando l'RP?
Tabella dati corrente ( dtSummary ) ;
col = Colonna ( test ) ;
nuovaCol = "RP" || test ;
F = Espr.Val ( 100 * ( Col Rango ( col ) / Espr ( riga ) )) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
riga1 = nrows ( dtSummary << ottenere le righe selezionate ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
riga2 = nrows ( dtSummary << ottenere le righe selezionate ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
dtSummary << escludere ;
nuovaCol = "RP" || test || "Sito 1" ;
F1 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col ) ) / Espr ( riga1 ) )) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F1 ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << seleziona dove ( : Luogo == 2 ) ;
dtSummary << non escludere ;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
dtSummary << escludere ;
nuovaCol = "RP" || test || "Sito 2" ;
F2 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col ) ) / Espr ( riga2 ) )) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F2 ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << seleziona dove ( : Luogo == 1 ) ;
dtSummary << non escludere ;
) ;
Ri: Lavorare con righe escluse?Ciao MS,
Grazie per avermi risposto.Me ne sono reso conto dopo aver cercato tra tutte le cose sull'esclusione.Inizialmente pensavo di dover escludere le righe, ecco perché l'ho scelto.Mi piace molto di più la semplicità del tuo codice, grazie!
Ri: Lavorare con righe escluse?Non sarebbe più semplice scegliere come target Site direttamente nell'istruzione If ed evitare di escludere del tutto le righe? Per esempio:
rpFunction = Funzione ({ test } ,
F = Espr.Val ( 100 * ( Col Rango ( Espr ( Colonna ( test ))) / Numero col ( : Luogo ))) ;
dtSummary << Nuova colonna ( "RP" || test , Numerico , Formula ( Nome Espr ( F ))) ;
F = Espr.Val ( 100 * ( Col Rango ( Se ( : Luogo != 1 , . , Espr ( Colonna ( test )))) / Col Somma ( : Luogo == 1 ))) ;
dtSummary << Nuova colonna ( "RP" || test || "Sito 1" , Numerico , Formula ( Nome Espr ( F ))) ;
F = Espr.Val ( 100 * ( Col Rango ( Se ( : Luogo != 2 , . , Espr ( Colonna ( test )))) / Col Somma ( : Luogo == 2 ))) ;
dtSummary << Nuova colonna ( "RP" || test || "Sito 2" , Numerico , Formula ( Nome Espr ( F ))) ;
) ;
Ri: Lavorare con righe escluse?Grazie mille, Jim.Funziona!Non avevo nemmeno pensato di guardarlo.Ero così fissato sul fatto che fosse l'esclusione delle righe poiché era una novità per me e non guardavo l'ovvio!Grazie ancora.
Ri: Lavorare con righe escluse?Natalie,
Penso di averlo trovato.
La seconda volta che assegni "Col=Newcol", in realtà non penso che tu voglia assegnarlo alla nuova colonna.In realtà vuoi continuare a puntare alla colonna Rp Irgl.Non nella nuova colonna denominata Rp Irgl per il sito 1. Utilizzi il valore di col nella tua formula e lo hai appena riassegnato a Rp Irgl per il sito 1.
Ho appena cambiato il
col=nuovacol;
col<
A
xcol=nuovacol;
xcol<
Il terzo uso di col=newcol; e col<Ri: Lavorare con righe escluse?
CIAO natalie_
forse potresti usare un wait() tra le selezioni.
in caso contrario, risparmierai tempo utilizzando sottoinsiemi della tabella originale e aggiornando la tabella originale con i calcoli necessari. assicurati solo di non sovrascrivere i dati nella tabella originale.
Ron
Ri: Lavorare con righe escluse?Ciao Jim,
Grazie per avermi risposto.Sfortunatamente il codice continua a non funzionare
Ho notato che nel codice che mi hai inviato non hai aggiunto un'esclusione(1) sotto la selezione Sito 2.L'ho aggiunto, ma sfortunatamente non ha funzionato.Ho allegato uno schermo per mostrarti come appare la mia tabella dati.Le prime due colonne rp sono ciò che voglio, ma l'ultima non ha valori.
rpFunction = Funzione ( { riga , test } ,
//riga --> quante righe (dispositivi) ci sono nella tabella dati?
//test --? per quale test stiamo calcolando l'RP?
Tabella dati corrente ( dtSummary ) ;
col = Colonna ( test ) ;
nuovaCol = "RP" || test ;
F = Espr.Val ( 100 * ( Col Rango ( col ) / Espr ( riga ) )) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
riga1 = nrows ( dtSummary << ottenere le righe selezionate ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
riga2 = nrows ( dtSummary << ottenere le righe selezionate ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
dtSummary << escludere ( 1 ) ;
nuovaCol = "RP" || test || "Sito 1" ;
F1 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col ) )) / Espr ( riga1 ) ) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F1 ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << seleziona dove ( : Luogo == 2 ) ;
dtSummary << escludere ( 0 ) ;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
dtSummary << escludere ( 1 ) ;
nuovaCol = "RP" || test || "Sito 2" ;
F2 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col ) )) / Espr ( riga2 ) ) ;
dtSummary << Nuova colonna ( nuovaCol , Numerico , Formula ( Nome Espr ( F2 ) ) ) ;
col = Colonna ( nuovaCol ) ;
col << eliminare la formula ;
dtSummary << seleziona dove ( : Luogo == 1 ) ;
dtSummary << escludere ( 1 ) ;
) ;

Ri: Lavorare con righe escluse?Natalie,
Ho preso il tuo codice e ho apportato una leggera modifica; Ho cambiato unexclude ed escludi in esclude(0|1).Ciò garantisce la corretta azione del messaggio.Gliexclude e unexclude sono in realtà opzioni, non messaggi assoluti.
Il codice sembra funzionare:
rpFunction = Funzione ( {riga , test} ,
//riga --> quante righe (dispositivi) ci sono nella tabella dati?
//test --? per quale test stiamo calcolando l'RP?
Tabella dati corrente (dtRiepilogo) ;
col = Colonna ( test ) ;
nuovaCol = "RP" || test ;
F = Espr.Val ( 100 * ( Col Rango (col) / Espr (riga) )) ;
dtSummary << Nuova colonna (nuova col , Numerico , Formula( Nome Espr ( F ) ) ) ;
col = Colonna (nuova col) ;
col << eliminare la formula;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
riga1 = nrows (dtRiepilogo < ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
riga2 = nrows (dtRiepilogo < ()) ;
dtSummary << Seleziona Dove ( : Luogo == 2 ) ;
dtSummary << escludere;
nuovaCol = "RP" || test || "Sito 1" ;
F1 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col) ) / Espr (riga1) )) ;
dtSummary << Nuova colonna (nuova col , Numerico , Formula( Nome Espr (F1))) ;
col = Colonna (nuova col) ;
col << eliminare la formula;
dtSummary << seleziona dove ( : Luogo == 2 ) ;
dtSummary << escludere ( 0 ) ;
dtSummary << Seleziona Dove ( : Luogo == 1 ) ;
dtSummary << escludere ( 1 ) ;
nuovaCol = "RP" || test || "Sito 2" ;
F2 = Espr.Val ( 100 * ( Col Rango ( Se ( escluso () , . , col) ) / Espr (riga2) )) ;
dtSummary << Nuova colonna (nuova col , Numerico , Formula( Nome Espr (F2))) ;
col = Colonna (nuova col) ;
col << eliminare la formula;
dtSummary << seleziona dove ( : Luogo == 1 ) ;
dtSummary << escludere ( 0 ) ;
) ;

Ri: Lavorare con righe escluse?non sono sicuro che ciò sia utile, ma nelle versioni precedenti del programma le formule di colonna non erano sensibili alle esclusioni.
altrimenti è meglio fare i calcoli basandosi su << get rows where () piuttosto che sulla selezione.
Ron
Ri: Lavorare con righe escluse?EDIT: F3 nella mia spiegazione dovrebbe in realtà dire F2.