Répartition de la table à cellule uniqueJ'essaie d'analyser les données de l'un des sous-composants de l'appareil fabriqué par mon entreprise. Malheureusement, les données utiles réelles sont enregistrées dans un tableau qui est condensé dans une seule cellule de la base de données (voir ci-dessous). Existe-t-il un moyen de diviser ces données en colonnes et lignes distinctes tout en conservant toutes les autres données (par exemple, attribuer le même numéro de série à toutes les nouvelles lignes de données) ? L'objectif final est d'avoir quelque chose comme le tableau Excel ci-dessous (que j'ai dû faire à la main : P) avec toutes les données de numéro de série, d'ID de station, etc. pour chaque ligne.
Avant:
| ID de la station | DateHeureDébut | En série | FunctionalTestTable |
| 1223 | 01/01/2020 | ASDF1234 | Pression, réglage du débit, variation du débit, valeur du débit, résultat du débit, UUT dP, étape Pos 11.000,0.00,0.050,0.001,PASS,11.047,-156 10.000,3.00,0.250,3.097,PASS,9.984,-119 10.000,5.00,0.250,4.933,PASS,9.990,-103 10.000,10.00,0.500,9.847,PASS,9.973,-64 10.000,100.00,5.000,101.048,PASS,9.968,525 7.000,3.00,0.250,2.957,PASS,6.983,-114 7.000,5.00,0.250,4.885,PASS,6.988,-95 7.000,10.00,0.500,9.822,PASS,6.990,-48 7.000,80.00,4.000,80.916,PASS,6.981,518 4.000,3.00,0.250,3.078,PASS,3.981,-101 4.000,5.00,0.250,5.110,PASS,3.988,-76 4.000,10.00,0.500,9.980,PASS,3.987,-15 4.000,50.00,2.500,52.123,PASS,3.993,447 |
Après:
| ID de la station | DateHeureDébut | En série | Pression | Réglage du débit | Écart de débit | Valeur de débit | Résultat du flux | UUT dP | Étape Pos |
| 1223 | 01/01/2020 | ASDF1234 | 11.000 | 0,00 | 0,050 | 0,001 | PASSER | 11.047 | -156 |
| 1223 | 01/01/2020 | ASDF1234 | 10.000 | 3,00 | 0,250 | 3.097 | PASSER | 9.984 | -119 |
| 1223 | 01/01/2020 | ASDF1234 | 10.000 | 5,00 | 0,500 | 4.933 | PASSER | 9.990 | -103 |
| 1223 | 01/01/2020 | ASDF1234 | 10.000 | 10.00 | 5.000 | 9.847 | PASSER | 9.973 | -64 |
| 1223 | 01/01/2020 | ASDF1234 | 10.000 | 100,00 | 0,250 | 101.048 | PASSER | 9.968 | 525 |
| 1223 | 01/01/2020 | ASDF1234 | 7.000 | 3,00 | 0,250 | 2.957 | PASSER | 6.983 | -114 |
| 1223 | 01/01/2020 | ASDF1234 | 7.000 | 5,00 | 0,250 | 4.885 | PASSER | 6.988 | -95 |
| 1223 | 01/01/2020 | ASDF1234 | 7.000 | 10.00 | 0,500 | 9.822 | PASSER | 6.990 | -48 |
| 1223 | 01/01/2020 | ASDF1234 | 7.000 | 80,00 | 4.000 | 80.916 | PASSER | 6.981 | 518 |
| 1223 | 01/01/2020 | ASDF1234 | 4.000 | 3,00 | 0,250 | 3.078 | PASSER | 3.981 | -101 |
| 1223 | 01/01/2020 | ASDF1234 | 4.000 | 5,00 | 0,250 | 5.110 | PASSER | 3.988 | -76 |
| 1223 | 01/01/2020 | ASDF1234 | 4.000 | 10.00 | 0,500 | 9.980 | PASSER | 3.987 | -15 |
| 1223 | 01/01/2020 | ASDF1234 | 4.000 | 50,00 | 2.500 | 52.123 | PASSER | 3.993 | 447 |
Merci!
David

Accès aux donnéesRe : Éclatement de la table à cellule unique@Jeff_Perkinson J'espère que vous l'avez fait dans JMP 16...
Re : Éclatement de la table à cellule uniqueJe suis heureux d'apprendre que cela a mis les données en forme pour que vous les analysiez.
Oui, vous pouvez créer un script pour le faire pour vous. Cela demandera un peu de travail, mais JMP en crée une partie pour vous.
Voici un aperçu de la façon de le faire.
JMP 15 ne capture pas la commande Text to Columns... mais la syntaxe est assez simple à écrire :
// Text to columns
Data Table( "Community330288.jmp" ) <<
Text to Columns( columns( :FunctionalTestTable ), Delimiters( NEWLINE ) );
L'étape suivante est la commande Stack. JMP place le JSL pour cela dans un script appelé Source dans la table résultante.

Faites un clic droit dessus et choisissez Modifier et vous obtiendrez le script à copier et coller :
stacked_data = Data Table( "Community330288.jmp" ) << Stack(
columns(
:FunctionalTestTable 1,
:FunctionalTestTable 2,
:FunctionalTestTable 3,
:FunctionalTestTable 4,
:FunctionalTestTable 5,
:FunctionalTestTable 6,
:FunctionalTestTable 7,
:FunctionalTestTable 8,
:FunctionalTestTable 9,
:FunctionalTestTable 10,
:FunctionalTestTable 11,
:FunctionalTestTable 12,
:FunctionalTestTable 13,
:FunctionalTestTable 14
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :StationID, :StartDateTime, :Serial ))
)
L'étape suivante consiste à répéter le texte aux colonnes avec une virgule comme délimiteur :
// Text to columns
stacked_data << Text to Columns( columns( :Data ), Delimiters( "," ) );
Une autre chose que JMP n'enregistrera pas est le changement de nom des colonnes à partir de la première ligne des données. Le renommage peut être scripté mais vous devrez l'écrire vous-même.
Si vous savez que le nombre de colonnes sera toujours le même (dans ce cas 7), vous pouvez le coder en dur. Si le nombre de colonnes est variable, vous devrez faire un peu plus de travail. Faites-moi savoir si c'est le cas et c'est un autre pont que nous pouvons vous aider à traverser.
for(i=1, i<=7, i++,
column("Data " || char(i))<<SET name=""></SET>
Enfin, vous devrez sélectionner les lignes contenant les noms de colonne et les supprimer. J'ai codé en dur le nom de la colonne et la valeur ci-dessous. S'ils sont variables... eh bien, cela prendra juste un peu plus de travail.
stacked_data << Select Where( :Pressure == "Pressure" ) << Delete Rows;
Enfin, changez certaines colonnes en numériques. Vous devrez répéter cette opération pour chaque colonne.
:Pressure << set data type(Numeric);
J'espère que cela aide.
Continuez à poser des questions.
Re : Éclatement de la table à cellule uniqueSalut Jeff, ça a parfaitement fonctionné ! J'ai une question de suivi. Existe-t-il un moyen d'enregistrer toutes ces étapes sous forme de script afin que je n'aie pas à les refaire à chaque fois que j'ai besoin d'extraire ces données ? J'ai essayé de l'enregistrer en tant que script de session, mais cela n'a pas enregistré l'éclatement des données.
Re : Éclatement de la table à cellule uniqueSalut @dpeyer ,
Voici un complément que vous pouvez appeler pour importer les données.
Vous pouvez également exécuter le script pour importer le fichier texte dans JMP.
J'ai basé l'importation sur l'exemple de fichier texte joint.
Le script et le complément peuvent être mis à jour pour concaténer des fichiers similaires dans un seul fichier.
acclamations,
Stan
Re : Éclatement de la table à cellule uniqueSalut Jef,
J'ai eu des mots avec l'ingénieur de test responsable, ne vous inquiétez pas :P. Il s'agit malheureusement de 14 000 tableaux séparés, chacun avec sa propre cellule et ses en-têtes répétés dans chaque tableau. J'ai joint une image de 3 (du 14k...). Je vais essayer ta méthode et je te dirai comment ça se passe !

Re : Éclatement de la table à cellule uniqueTout d'abord, celui qui a créé une table comme celle-ci devrait être... eh bien... je peux penser à des punitions appropriées.
Heureusement, je pense que JMP rendra cela relativement facile à gérer.
Tout d'abord, utilisez le Cols -> Utilitaires -> Texte aux colonnes.. . comme @Mandy_Chambers suggéré, mais utilisez NEWLINE comme délimiteur.

Cela devrait vous donner une nouvelle colonne pour chaque ligne dans votre colonne FunctionalTextTables.

Maintenant, utilisez Tableaux-> Pile pour empiler toutes les colonnes FunctionalTestTable # (c'est-à-dire FunctionalTestTable 1, FunctionalTestTable 2, etc.).

Cela vous donnera une ligne pour chacune de ces colonnes.

Maintenant, vous pouvez utiliser Texte aux colonnes... encore une fois, cette fois avec une virgule (,) comme délimiteur.

Vous obtiendrez maintenant les colonnes de valeurs individuelles.

Il s'agit maintenant de copier et coller les noms des colonnes. Voici une astuce pour vous y aider Les noms de colonnes vous dépriment ? Essaye ça.Et puis, utilisez Cols-> Standardiser les attributs pour modifier le type de données des colonnes en Numérique, le cas échéant.
Vous avez dit que vous aviez une base de données de 14k de ceux-ci. S'agit-il de 14 000 tables différentes dans la base de données ou de 14 000 lignes d'une seule table ? J'espère que ce dernier, car vous devriez pouvoir obtenir tout cela dans une seule table de données JMP en utilisant Fichier-> Base de données-> Ouvrir la table ...
S'il s'agit vraiment de 14 000 tables différentes, vous devrez utiliser Tables->Concaténer pour les rassembler tous dans une seule table dans JMP, mais traversons ce pont après avoir confirmé qu'il se trouve dans la base de données.
Indépendamment de, Sélectionnez les cellules correspondantes est un autre outil qui vous aidera à nettoyer. J'expliquerai cela dans un post de suivi après que nous ayons fait un peu plus de progrès.
Re : Éclatement de la table à cellule uniqueHmmm...Je ne dois pas décrire ce que j'essaie de faire correctement. J'ai mis à jour ma question initiale avec un exemple avant/après pour mieux illustrer. De plus, j'ai une base de données de 14 000 FunctionalTestTables pour lesquelles j'ai besoin de faire cela, donc faire du texte en colonnes, puis transposer chaque table individuelle n'est pas une option viable.
Merci pour votre aide! J'apprécie vraiment
Re : Éclatement de la table à cellule unique
Re : Éclatement de la table à cellule uniqueMandy,
Merci pour le conseil! J'ai entendu parler de l'utilitaire Text to Columns juste avant de publier ce message, mais cela a créé 84 nouvelles colonnes par ligne et a perdu la fonctionnalité des données tabulées que j'essaie d'utiliser. Je construis un exemple de ce que je voudrais que la sortie soit et l'ajoute à mon message d'origine.
Merci!
Re : Éclatement de la table à cellule uniqueJe pense que notre message s'est croisé. Donc, après avoir utilisé Text to columns, allez maintenant utiliser Tables Transpose et vous pouvez retourner le tableau et obtenir les données dans des colonnes ..
Re : Éclatement de la table à cellule uniquevous pouvez prendre la valeur comme ceci, 11.000,0.00,0.050,0.001,PASS,11.047,-156, cette colonne et utiliser Columns > Utilities > Text to Cols pour créer des colonnes séparées pour les différentes choses dans cette colonne.
Utilisez les délimiteurs ,-
et cela vous donnera des colonnes comme celle-ci :
11 000 0,00 0,050 0,001 RÉUSSI .. etc..
si vous voulez le décomposer davantage ou différemment, vous pouvez utiliser un délimiteur ou un espace différent.
J'espère que c'est ce que vous essayiez de faire.