
Dans cette démonstration, nous allons sélectionner des lignes spécifiques et utiliser la commande de sous-ensemble, accessible de manière interactive dans le menu Tableaux, pour extraire un sous-ensemble du tableau de données. Dans le journal de cours de la section, je clique sur « Données de température des chalets de ski ». Ce tableau de données est large, mais assez court. Prenons l'exemple d'une station de ski équipée d'une station météorologique. Celle-ci enregistre la température toutes les heures et l'enregistre dans un fichier. Chaque observation sera donc enregistrée dans le fichier avec la date et les relevés horaires de température. Le début de la journée est le matin, et la température est donc la même à cette heure-là. Supposons maintenant que, lorsque la température descendra en dessous de -°C, nous prévoyons d'activer les canons à neige, car il pourrait faire trop froid à cette température pour neiger. Nous souhaitons donc consulter nos données historiques pour identifier les jours où nous aurions utilisé cet enneigeur. Peut-être cherchons-nous à justifier l'ajout d'un autre enneigeur ou le remplacement de celui existant. Voici donc quelques points importants. Premièrement, cette température a été enregistrée en degrés Fahrenheit, et non Celsius. Deuxièmement, nous n'utilisons qu'un petit sous-ensemble de données. Ces données sont classées par jour, mais cela représente l'une de nos meilleures pratiques : lorsque vous travaillez sur un grand ensemble de données, essayez d'obtenir un échantillon représentatif d'observations pour développer votre script afin de pouvoir le développer et le tester sur un sous-ensemble plus restreint. Là encore, nous espérons représenter les problèmes potentiels dans les données. Vous pourrez ensuite le tester sur l'ensemble de données. Dans cet exemple, nous espérons que c'est représentatif, car nous n'avons utilisé qu'une seule semaine de données. Deuxièmement, nous avons enregistré des températures en degrés Fahrenheit, mais notre seuil est de moins degrés Celsius. Ainsi, même si nous pouvons certainement convertir moins degrés Celsius en degrés Fahrenheit, nous allons réitérer ce concept d'opérations vectorisées et extraire toutes les températures en degrés Fahrenheit sous forme de matrice et les convertir en degrés Celsius. Dans le journal, il y a un script pré-écrit appelé « Isolate Snow-Making Days Script ». Je vais l'exécuter étape par étape. Dans cette démonstration, j'utiliserai l'option « Log intégré » plutôt que de naviguer dans la fenêtre du journal. Je fais un clic droit dans l'éditeur de script et je sélectionne « Afficher le journal intégré ». Je redimensionne ensuite le script pour qu'il soit toujours visible dans l'éditeur. Je sélectionne « Line » et je l'exécute. La référence de la table de données actuelle, la table de données « Température du chalet de ski », est récupérée et stockée dans la variable dt. J'envoie ensuite le message « get as matrix » et je le stocke dans la variable tempF. J'exécute « Line ». Souvent, avec une matrice plus grande, au lieu d'afficher la matrice dans le journal, nous obtenons simplement les dimensions de la matrice et l'indication de son affectation. Remarquez qu'il y a sept lignes et colonnes. Si je retourne à la table de données, elle contient des colonnes. Alors pourquoi n'avons-nous extrait que les colonnes ? Si vous regardez la colonne de date, vous pouvez d'abord constater qu'elle est nominale. Cela suggère donc qu'elle est peut-être traitée comme des données de type caractère plutôt que numérique. Je peux également le confirmer en consultant les informations de la colonne, mais je peux aussi le confirmer en élargissant légèrement la colonne et en notant que les valeurs sont justifiées à gauche, ce qui est la façon dont JMP gère les données de type caractère. Ainsi, lorsque j'ai envoyé get as matrix à la table de données, il a ignoré cette colonne de type caractère et n'a extrait que les colonnes numériques. Line va ensuite prendre chaque élément de la variable tempF, cette matrice qui y est stockée, la convertir en degrés Celsius et la stocker dans tempC. J'obtiens à nouveau le même message dans le journal, mais vous pouvez survoler tempf ou tempc pour voir leurs valeurs. Ensuite, je souhaite compter les lignes dans tempC, et j'ai mentionné cette bonne pratique : compter les lignes ou les colonnes en dehors d'une boucle. Je compte donc les lignes de la matrice tempC et je stocke ces données dans la variable nr. Je lance donc line, et bien sûr, il y en a sept. Je souhaite également créer deux matrices. L'une indique la température minimale journalière (minTemp), et l'autre indique si l'enneigeur aurait dû être allumé (Machine). Elles commencent toutes deux avec un certain nombre de lignes, une colonne et des valeurs manquantes. Dans line, nous utilisons la fonction assign. J'utilise cette fonction J pour créer une matrice avec un certain nombre de lignes : le nombre de lignes de tempC, cette colonne unique comme je l'ai mentionné, et la valeur manquante. Si Machine, minTemp et d'autres variables commencent avec la même valeur, nous pouvons simplement les affecter en cascade, comme vous le voyez dans line. Je lance donc cette fonction. Dans le journal, si vous survolez Machine ou minTemp, vous verrez la colonne des valeurs manquantes. Ensuite, je veux boucler. Je commence avec un compteur. Je teste si r est inférieur ou égal aux nombres stockés dans nr. Le corps de la boucle for est : j’ai une variable appelée obs qui prend, dans ce cas, la première ligne et toutes les colonnes de tempC. Je trouve la valeur minimale de cette ligne et la place à la rième place, ou première place, dans minTemp. Ensuite, je compare la valeur que je viens de saisir dans minTemp à cette position avec la valeur négative. Si la comparaison est vraie, si la valeur est inférieure à la valeur négative, j’obtiens une valeur booléenne et je la place en première position dans Machine. Si elle est fausse, si elle est supérieure ou égale à la valeur négative, je la place dans Machine. Ensuite, nous mettons à jour, nous testons à nouveau, et obs est écrasé par la ligne suivante de la table de données. Nous répétons les mêmes étapes jusqu’à ce que minTemp et Machine soient renseignés. Je parcoure donc les lignes et nous pouvons survoler minTemp. Cela apparaît à nouveau dans l'aide au survol, ainsi qu'en bas de la fenêtre de saisie du script, comme illustré ci-dessous. Je peux survoler « Machine » et ces messages apparaissent. Pour les deux dernières étapes, nous aurions pu les afficher en cascade, mais pour la démonstration, nous allons les séparer. Je vais donc envoyer un message de nouvelle colonne à dt. Il s'appellera « minTemp », et les valeurs seront celles que je viens d'obtenir de la boucle for. Je vais donc exécuter les lignes. Vous pouvez voir en arrière-plan que cette nouvelle colonne a été créée. J'aurais pu ajouter un argument de format à la nouvelle colonne pour avoir un nombre fixe de décimales, par exemple. Cela a également renvoyé une référence d'objet de colonne que j'aurais pu stocker dans une variable si je prévoyais de réutiliser cette colonne. Le code suivant définit un message de nouvelle colonne à dt. Celui-ci s'appelle « Make Snow ». Et les valeurs proviennent de ce vecteur de colonne de machine, qui a et Et ici, mon script va demander que nous utilisions des étiquettes de valeur où s'il y a un pour la valeur de données, l'étiquette sera non, et s'il y a un pour la valeur de données, l'étiquette sera oui. Et puis, bien sûr, nous utilisons le booléen pour activer l'option d'utilisation des étiquettes de valeur. Donc, je vais exécuter des lignes à nouveau. Nous créons une instance d'un objet colonne. Et je veux revenir au tableau et faire défiler. Donc, dans la colonne en ce moment, ce que nous affichons est non et oui. Dans le panneau des colonnes, si je fais défiler vers le bas, vous pouvez toujours voir que Make Snow est continu, ce qui signifie qu'il s'agit de données numériques pour les valeurs de données réelles. Et autre chose avec les étiquettes de valeur lorsque je les utilise - et cet astérisque dans le panneau des colonnes indique également qu'il y a une propriété, et si vous cliquiez dessus, vous verriez celle-ci - lorsque j'utilise des étiquettes de valeur, si je survole une cellule du tableau de données, cela m'affiche la valeur des données réelles. Mais si je devais créer un graphique ou une analyse, ces étiquettes seraient utilisées, à condition qu'elles soient activées. Ensuite, dans le script, nous pourrions à nouveau envoyer ces messages en cascade à la table de données, mais à des fins de démonstration, nous allons procéder comme suit : j'envoie « select where » à la table de données et je recherche les lignes dont la valeur de la colonne « Make Snow » est égale à. J'exécute « line ». Vous pouvez voir en arrière-plan que quatre lignes ont été sélectionnées. Enfin, j'envoie la commande « subsect » à la table de données. Je fournis un nom de table de sortie et précise les colonnes. Comme j'ai quatre lignes sélectionnées, je n'ai pas besoin de préciser lesquelles. Elles seront automatiquement intégrées à la table de sous-ensembles. J'exécute « lines through ». Nous avons maintenant cette table de sous-ensembles. À ce stade, nous pourrions choisir de formater les données de température minimale. Le script source reflète le sous-ensemble. Examinons cela rapidement : je fais un clic droit sur la source et je sélectionne « Edit ». Chaque fois que je crée un script à l'aide d'une commande du menu Tables, que ce soit de manière interactive ou via un script, j'obtiens le script source. Il indique donc simplement que la commande de table utilisée est le sous-ensemble. L'inconvénient de ce sous-ensemble est qu'il ignore la raison pour laquelle ces lignes ont été extraites et les code donc en dur. Cette sélection n'est pas justifiée dans le script JMP. De plus, JMP contourne cette tendance par défaut à extraire uniquement les lignes sélectionnées en ajoutant un argument à ces lignes. Si vous souhaitez capturer le script et l'adapter à un autre script que vous écrivez, supprimez les deux lignes que j'ai présentées et, avant d'envoyer le message de sous-ensemble, effectuez les sélections logiques requises par votre script. J'annulerai donc ce script. Ceci est un exemple d'utilisation d'une commande du menu Table, mais aussi de traitement des données sous forme de matrices.