sumif: conta le colonne se contengono qualche carattereCiao,
Ho trovato una discussione del 2015 (oggetto "sumif") che contiene uno script molto utile per il mio compito attuale. Ho scritto lì la mia domanda, ma non so se le persone che hanno partecipato a quella discussione riescono a vederla.
Ho trovato questo script (leggermente modificato) e funziona benissimo per contare le colonne per ogni riga in cui i valori sono "0/0" (o qualsiasi altro valore).
dt << New Column("Sum",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Column(i)[] =="0/0")}, n))
)
)
);Tuttavia, come modificare questo script per contare le colonne che contengono "some_character"?
Ho allegato una tabella dati in cui l'ultima colonna "Somma" contiene una formula e i numeri risultanti necessari.
Ho una tabella di dati di grandi dimensioni e vorrei uno script per contare le colonne per ogni riga con valori specifici (come caratteri).
Ho provato a modificare lo script sopra ma non funziona:
dt << New Column("Miss",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Contains(Column(i)[],"."))}, n))
)
)
);</CODE>Please, help</P><P>Valentina</P></LINGO-BODY><LINGO-LABS id="lingo-labs-737490" slang="en-US" mode="CREATE"><LINGO-LABEL>Automazione e scripting</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-737586" slang="en-US" mode="CREATE">Re: sumif: conta le colonne se contengono qualche carattere</LINGO-SUB><LINGO-BODY id="lingo-body-737586" slang="en-US" mode="CREATE"><P>La tabella dati originale che hai allegato non era così poiché ha 4 colonne (non puoi ignorare la colonna Somma)</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/62510iAAF3B35AD80E493A/jthi_0-1711103084651.png" role="button" title="jthi_0-1711103084651.png" alt="jthi_0-1711103084651.png" /></span></SPAN></P>
<P>A seconda dei dati, ecco come procederei se dovessi utilizzare una formula (molto probabilmente eviterei questo e userei semplicemente una soluzione di script puro)</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open("$DOWNLOADS/sum_help_data.jmp");
dt << Delete Column("Sum");
dt << New Column("Miss", Numeric, Continuous, Formula(
As Constant(
cols_of_interest = Filter Each({colname}, Current Data Table() << Get Column Names("String"),
!IsMissing(Regex(colname, "S\d"));
);
);
Local({
res = 0;
},
For Each({colname}, cols_of_interest,
res = res + (Contains(Column(colname)[], ".") > 0);
);
res;
);
));
Re: sumif: conta le colonne se contengono qualche carattereSì, sembra che tutti i dati dovrebbero essere dello stesso tipo.
Grazie, funziona!
Re: sumif: conta le colonne se contengono qualche carattereHo allegato una piccola tabella dati al mio post. Ha 3 righe e 3 colonne con un'intestazione:
S1 S2 S3
0/0./. 0/0
./. ./. ./.
0/0 0/0 0/0
Lo script non funziona in questa tabella di esempio
Somma colonna Formula interrotta
l'argomento è di tipo errato alla riga 1 nell'accesso o nella valutazione di 'Contiene', Argomento non valido (Column( i )[] ), Contiene/*###*/(Column( i )[], ".")
Gli errori di valutazione della formula sono stati ignorati
Re: sumif: conta le colonne se contengono qualche carattereMolto probabilmente il tuo ciclo sta raggiungendo una colonna che non è una colonna di caratteri. Questa parte molto probabilmente necessita di qualche modifica
n = N Col(Current Data Table()) - 1
come dovrebbe essere fatto è molto difficile da sapere senza alcuna conoscenza dei tuoi dati. Potrebbe essere solo una semplice modifica al -1, ottenere un elenco di colonne di caratteri o calcolare quali colonne esaminare tramite una sorta di schema
Re: sumif: conta le colonne se contengono qualche carattereQuesto è dal mio registro:
Formula di somma delle colonne interrotta
l'argomento è di tipo errato alla riga 421001 nell'accesso o nella valutazione di 'Contiene', Argomento non valido (Column( i )[] ), Contiene/*###*/(Column( i )[], ".")
Gli errori di valutazione della formula sono stati ignorati
Re: sumif: conta le colonne se contengono qualche carattereMi dispiace, non ho capito la tua domanda.
Ho una tabella di circa 500.000 righe e circa 3.000 colonne. Devo calcolare la somma tra le colonne che contengono un punto - non posso usare la formula. .
Voglio avere uno script, uno script qualsiasi che funzioni. Ho provato diversi approcci ma nessuno ha funzionato. .
Re: sumif: conta le colonne se contengono qualche carattereÈ necessaria una formula per farlo?