sumif : compte les colonnes si elles contiennent un caractèreBonjour,
J'ai trouvé une discussion de 2015 (sujet « sumif ») qui contient un script très utile pour ma tâche actuelle. J'y ai écrit ma question mais je ne sais pas si les personnes qui ont participé à cette discussion peuvent voir ma question.
J'ai trouvé ce script (légèrement modifié) et il fonctionne très bien pour compter les colonnes pour chaque ligne où les valeurs sont « 0/0 » (ou autre).
dt << New Column("Sum",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Column(i)[] =="0/0")}, n))
)
)
);Cependant, comment éditer ce script pour compter les colonnes qui contiennent « some_character » ?
J'ai joint un tableau de données où la dernière colonne « Somme » contient une formule et les nombres résultants nécessaires.
J'ai une grande table de données et j'aimerais avoir un script pour compter les colonnes pour chaque ligne avec des valeurs spécifiques (sous forme de caractère).
J'ai essayé de modifier le script ci-dessus mais cela ne fonctionne pas :
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>Automatisation et scripts</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-737586" slang="en-US" mode="CREATE">Re: sumif : compter les colonnes si elles contiennent un caractère</LINGO-SUB><LINGO-BODY id="lingo-body-737586" slang="en-US" mode="CREATE"><P>Le tableau de données d'origine que vous avez joint n'était pas comme ça car il comporte 4 colonnes (vous ne pouvez pas ignorer la colonne Somme)</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>En fonction de vos données, voici comment je procéderais si je devais utiliser une formule (j'éviterais probablement cela et utiliserais simplement une solution de script pure)</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 : compter les colonnes si elles contiennent un caractèreOui, il semble que toutes les données devraient être du même type.
Merci - ça marche !
Re: sumif : compter les colonnes si elles contiennent un caractèreJ'ai joint un petit tableau de données à mon message. Il comporte 3 lignes et 3 colonnes avec un en-tête :
S1 S2 S3
0/0./. 0/0
./. ./. ./.
0/0 0/0 0/0
Le script ne fonctionne pas dans cet exemple de tableau
Formule de somme des colonnes interrompue
l'argument est de type incorrect à la ligne 1 dans l'accès ou l'évaluation de 'Contient', mauvais argument (colonne (i) []), contient/*###*/(colonne (i) [], ".")
Les erreurs d’évaluation des formules ont été ignorées
Re: sumif : compter les colonnes si elles contiennent un caractèreIl est fort probable que votre boucle atteigne une colonne qui n'est pas une colonne de caractères. Cette partie nécessite probablement quelques modifications
n = N Col(Current Data Table()) - 1
Il est très difficile de savoir comment cela doit être fait sans aucune connaissance de vos données. Il peut s'agir simplement d'une simple modification du -1, d'obtenir une liste de colonnes de caractères ou de calculer les colonnes à parcourir selon une sorte de modèle
Re: sumif : compter les colonnes si elles contiennent un caractèreCeci est tiré de mon journal :
Formule de somme de colonne interrompue
l'argument est de type incorrect à la ligne 421001 dans l'accès ou l'évaluation de 'Contient', mauvais argument (colonne (i) []), contient/*###*/(colonne (i) [], ".")
Les erreurs d’évaluation des formules ont été ignorées
Re: sumif : compter les colonnes si elles contiennent un caractèreDésolé, je ne comprends pas votre question.
J'ai un tableau d'environ 500 000 lignes et d'environ 3 000 colonnes. Je dois calculer la somme des colonnes contenant un point - je ne peux pas utiliser de formule.
Je veux avoir un script, n'importe quel script qui fonctionnerait. J'ai essayé différentes approches mais aucune n'a fonctionné.
Re: sumif : compter les colonnes si elles contiennent un caractèreAvez-vous besoin d'une formule pour cela ?