J'ai maintenant publié certains des compléments que j'ai écrits pour JMP. Les codes et compléments (certains sont cryptés) peuvent être trouvés sur cette page GitHub jthi-jmp-tools (github.com) et un aperçu peut être trouvé à partir de jthi-jmp-tools / JMP-Tools (github.com) dépôt. Si vous avez des suggestions sur ces compléments, vous pouvez :
- Commenter cet article
- Ouvrez un problème dans le référentiel GitHub correct lié à ce complément ou à un complément générique
- Commentez sur la page du complément de la communauté JMP si j'ai publié le complément ici
- Envoyer un message privé à la communauté JMP
Le but de leur développement est de fournir de nouveaux outils, d'améliorer les outils dont JMP dispose déjà et surtout d'améliorer mes compétences en script tout en écrivant du code quelque peu intéressant. Tous les compléments peuvent être trouvés sur jthi-jmp-tools/JMP-Tools/releases (github.com) et vous devriez pouvoir les télécharger et les installer à partir de là. Certains peuvent également être trouvés dans la communauté JMP. Les compléments incluent certaines fonctions autonomes que vous pouvez utiliser dans vos propres scripts en incluant les scripts corrects/en les copiant dans votre code, donc si cela vous intéresse, je vous suggère de jeter un œil aux codes sources.
Les compléments sont structurés avec une idée de base que j'ai eue il y a longtemps sur la façon de les structurer, ils ont donc pour l'essentiel la même structure de répertoires et quelques fichiers communs. Par exemple, certains paramètres pouvant être enregistrés ont été enregistrés dans le fichier settings.json. Les compléments sont assemblés en utilisant Gestionnaire de compléments car cela rend la gestion de plusieurs compléments beaucoup plus facile que les outils natifs fournis par JMP.
La plupart des compléments seront ajoutés au menu Compléments sous JMP-Tools :

Il existe également un complément pour la barre d'outils. Ceci peut être trouvé sur la page des versions « principaux-référentiels ». Surtout utile si vous avez installé (tous/la plupart) les compléments décrits ici.

Vous trouverez ci-dessous un aperçu rapide des compléments que j'ai créés, notez qu'il y en a quelques-uns qui sont en gros travaux en cours. Les scripts qui peuvent être trouvés auprès de la communauté doivent avoir ce lien "livre" dans le titre
.
L'idée est de fournir aux utilisateurs des statistiques récapitulatives rapides et des actions rapides qu'ils peuvent effectuer sur les colonnes. Cela peut être utilisé comme premier outil que vous exécutez lorsque vous obtenez un nouvel ensemble de données pour obtenir un aperçu des données avec lesquelles vous travaillez (inspiré en partie par profilage des pandas (github.com) ).

De temps en temps, vous rencontrerez des données mal codées et dont le type de données est incorrect. Dans JMP, lorsque vous modifiez le type de données de Caractère à Numérique, vous risquez assez facilement de perdre certaines données en raison du fonctionnement de la conversion. Le but de cet outil est de convertir les colonnes de caractères sélectionnées (qui peuvent être converties en toute sécurité) en colonnes numériques. L'outil récupère les valeurs dans les colonnes, puis vérifie si elles peuvent être converties en valeurs numériques. Et si tous (ou suffisamment d’entre eux) peuvent être convertis, le type de données sera changé en numérique. Il vous permet de sélectionner les colonnes que vous souhaitez convertir, d'utiliser le seuil de conversion et le taux d'échantillonnage.

Cet outil créera une colonne de commande dans une table de données avec les numéros de ligne actuels. Ceci est utile lorsque vous démarrez l'analyse et souhaitez trier les données, tout en ayant la possibilité de revenir à l'ordre d'origine. La colonne sera créée au début du tableau de données et si plusieurs colonnes de classement sont créées, l'indexation est ajoutée.

J'ai également créé un élément de liste de souhaits en espérant que quelque chose d'un peu similaire puisse être trouvé directement depuis JMP (pour les colonnes, cela existe déjà mais pas pour les lignes) Ajouter la propriété/colonne de commande d'origine aux tables de données JMP lors de l'ouverture/création
L'outil permet à l'utilisateur de supprimer facilement plusieurs colonnes qui contiennent plus que le montant spécifié (seuil) de valeurs manquantes.

Cet outil permet à l'utilisateur de remplir les valeurs manquantes en fonction de la valeur trouvée précédente/suivante/la plus proche. Il existe déjà des outils qui peuvent le faire d'une manière ou d'une autre (même JMP a des lignes de remplissage), mais ceux que j'ai utilisés/vus manquent à C'est au moins l'option de regroupement que ce complément vous permet de faire, cela ne devrait pas non plus nécessiter que vous ayez le tableau de données trié si vous utilisez la colonne Ordre.

Le but de l'outil est de fournir à l'interface utilisateur des valeurs uniques répertoriées dans la colonne sélectionnée (nominale, ordinale) dans différents formats à partir de la table de données sélectionnée. À partir de cette liste, l'utilisateur peut soit copier-coller directement les valeurs dans le presse-papiers, soit utiliser des boutons spécifiques pour la copie.
L'outil fournit également une option pour coller des valeurs directement dans la boîte et obtenir les valeurs dans différents formats. Ceci est pratique lorsque vous copiez et collez des valeurs depuis Excel par exemple. Vous pouvez également formater les valeurs du presse-papiers directement vers la liste SQL.

Le but de ce complément est de fournir à l'utilisateur un moyen de créer une nouvelle table avec une ou plusieurs colonnes de valeurs groupées de la même manière que le listagg de SQL. Dans le meilleur des cas, cette option se trouverait dans les plates-formes Summary et Split de JMP, car de temps en temps, j'aimerais conserver certaines valeurs même si je divise ou regroupe avec Summary.

J'ai créé des éléments de liste de souhaits pour ces deux éléments Autoriser Split à créer des colonnes de réponses multiples et Ajouter Listagg/Concatenate/GROUP_CONCAT à la plateforme de résumé tableau.
Joignez deux tables de données avec une colonne continue. Peut faire une jointure en arrière, en avant, le plus proche/le plus proche. Prend en charge l'utilisation de la tolérance/distance maximale pour la jointure et l'utilisation de la colonne de regroupement. Il n'est pas nécessaire de trier les données, mais cela accélère l'exécution de l'outil. Inspiration en partie de Python Pandas - Fusionner Asof

J'ai créé un élément de liste de souhaits qui est partiellement lié à celui-ci Ajouter une jointure floue / dès la fusion / une jointure par colonnes qui n'ont pas de correspondances exactes
La plupart des options de classement des colonnes trouvées dans le menu Cols/Réorganiser les colonnes de JMP n'offrent pas la possibilité de trier uniquement les colonnes sélectionnées. Ce complément fournit ces options aux utilisateurs de JMP.

Il existe un élément de liste de souhaits lié à cela (et c'est la raison pour laquelle j'ai écrit ce complément) Réorganisation des colonnes > Trier par nom/type de données/rôle > COLONNES SÉLECTIONNÉES UNIQUEMENT
10. Remplacez X par Y ( remplacer-x-par-y (github.com) )
Remplace les correspondances complètes par une autre valeur dans les colonnes sélectionnées.

L'objectif de cet outil est de permettre aux utilisateurs de JMP de diviser des données longues (empilées) et de définir des limites de spécification directement à partir des données d'origine si les données sont au format correct.

Outil permettant de fournir un accès rapide aux scripts définis par l'utilisateur (préconfigurés pour jthi-jmp-tools). Donne également accès au lancement de scripts, à la modification de leur fichier settings.json et à l'ouverture du répertoire. Permet également de modifier la table de données actuelle.
Strongy a suggéré d'ajouter un raccourci avec un accès facile, par exemple le mien est Ctrl+Shift+Z. Si le script est déjà ouvert, le relancer le fera passer au premier plan.

Il s'agit encore d'un travail en cours, mais l'idée est de fournir une liste de fichiers des répertoires spécifiés par l'utilisateur et de permettre l'ouverture de fichiers/répertoires.

C'est tout pour l'instant, je vais essayer de terminer les compléments encore mal inachevés à un moment donné et de corriger les bugs que je rencontre. Les versions les plus récentes des compléments peuvent être trouvées sur GitHub.
N'hésitez pas à le télécharger depuis Fill Missing Cells , à installer le complément et à l'essayer.
Certaines choses similaires peuvent être effectuées directement dans JMP avec Fill :

et avec le complément Outils de table de données . Le complément que j'ai écrit présente des avantages supplémentaires tels que le regroupement des colonnes et ne nécessite pas de tri de la table de données SI vous avez une colonne à trier (si aucune colonne de tri n'est fournie, il utilisera l'ordre des lignes).
VBA peut faire tellement de choses et peut être écrit de tellement de manières différentes que je ne vois pas qu'il soit réalisable de convertir VBA directement en JSL avec un complément "simple". La conversion peut peut-être être effectuée dans certains cas simples, mais sinon, elle doit être effectuée au cas par cas. Vous pouvez également utiliser JMP pour exécuter des macros Excel à l'aide de Run Program().
Convertissez rapidement la copie du navigateur en code JSL avec la fonctionnalité de remplacement d'EmEditor
CURL (CMD) est copié à partir du navigateur F12 et rapidement converti en code JSL avec la fonction de remplacement EmEditor.
Bien entendu, ce processus doit également être implémenté avec JSL.

cURL(cmd)
curl "http://excalc" -H "Connection: keep-alive" -H "Origin: http://excalc.icfqs.com:7616" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" -H "Content-Type: text/plain" -H "Accept: */*" -H "Referer: http://excalc.icfqs.com:7616/site/tdx-zbfx/page-ddlj.html?setcode=1^&code=xxxxxx^&name=ssssss^&color=0" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7" -H "Cookie: ASPSessionID=" --data-binary "^[^{^\^"funcId^\^":2,^\^"offset^\^":0,^\^"count^\^":200,^\^"cond^\^":^\^"time,11700,33600^|amount,14^\^",^\^"modname^\^":^\^"TickAly^\^"^}^]" --compressed --insecure
Éditeur Em
document.selection.Replace("\\r","\\n",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace("\\n\\n","\\n",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace(" -H ","\\n",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace("curl \"(.{0,})$","u=\"\\1;h=[=>];//h[\"Content-Type\"]=\"application/json\";",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace(" --compressed","\\n--compressed",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace(" --data(.[^\"]{0,})(.{0,})$","\\njj=\\2;",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
//document.selection.Replace("\"cookie: (.{0,})$","h[\"cookie\"]=\"\\1;",eeReplaceAll | eeFindReplaceRegExp,eeExFindSeparateCRLF);
document.selection.Replace("\"cookie: (.{0,})$","h[\"cookie\"]=\"\\1;\\nzzzrs=New HTTP Request(URL(u),Method(\"GET\"),Headers(h));//rs=New HTTP Request(URL(u),Method(\"POST\"),JSON(jj),Headers(h));\\nr=rs<<SEND></SEND>JSL(<SPAN>Je ne finis pas</SPAN>)
<CODE class=" language-jsl">u="http://excalc";h=[=>];//h["Content-Type"]="application/json";
//h["User-Agent"]="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
//h["ac"]="*/*";
h["cookie"]="ASPSessionID=";
rs=New HTTP Request(URL(u),Method("GET"),Headers(h));//rs=New HTTP Request(URL(u),Method("POST"),JSON(jj),Headers(h));
r=rs<<SEND></SEND><CODE class=" language-jsl">