Contenu conditionnel de cellule de concaténation de différentes lignesBonjour,
Avoir un cas comme indiqué ci-dessous.
Je voudrais concaténer les différentes lignes de "Description" pour le même "Case #" dans une cellule combinée qui s'aligne avec "Case #"
par exemple C2 concatène B2, B3, B4 qui sont tous pour "Cas 1"
C5 concatène B5 qui correspond au "Cas 2"
C6 concatène B6, B7 qui sont tous pour "Case 3"
En fin de compte, supprimera les lignes redondantes en ne laissant qu'une ligne pour un cas # avec ses descriptions dans la 2ème colonne
Le nombre possible de lignes de description varie pour différents "Case". Il y a quelques milliers de "Case", impossible de le faire manuellement
J'aimerais demander quelques conseils pour le faire en JSL si possible, merci:)

Re: Contenu conditionnel de cellule de concaténation de différentes lignesÉpingle,
C'est assez facile à faire de manière interactive, le JSL est un peu lourd, bien que le nombre de descriptions soit inconnu et doit être pris en compte dans le code. Pour ce faire de manière interactive:
- Créez une colonne avec les numéros de cas remplis si ce n'est pas déjà fait (c'est-à-dire que vous ne voulez pas de valeurs manquantes dans cette colonne). Cela peut être fait avec la formule
If( Row() == 1 | !Is Missing( oldColRef ),
oldColRef,
Lag( newColRef, 1 )
)
où oldColRef est une référence à l'ancienne colonne de cas et newColRef fait référence à la colonne que vous créez dans la formule
- Sélectionnez la colonne Description et Cols> Utilitaires> Créer des colonnes d'indicateurs
- Utilisez Tableaux> Résumé pour résumer par la nouvelle colonne de cas. Sélectionnez toutes les colonnes d'indicateur et choisissez Max comme statistique. Définissez le format de colonne statistique sur colonne. Vous pouvez vous dissocier de la table d'origine, mais ce n'est pas nécessaire.

- Dans le tableau résultant, sélectionnez toutes les colonnes d'indicateur, accédez à Cols> Utilitaires> Combiner les colonnes. Assurez-vous de cocher la case Les colonnes sélectionnées sont des colonnes d'indicateur.
Le tableau résultant devrait être ce que vous recherchez, je crois. Laissez-moi savoir si cela fonctionne. Grâce à @brady_brady qui a montré une variation à ce sujet dans son 10+ choses que vous ne savez pas sur JMP® (EU 2018424) Discussion découverte. Si vous avez vraiment, vraiment, vraiment besoin du code JSL, je peux trouver quelque chose. Cela n'aura probablement aucun sens pour un scripteur novice.
Re: Contenu conditionnel de cellule de concaténation de différentes lignesSalut Pin,
Voici JSL pour ce faire. J'ai également une autre façon de le faire de manière interactive, en utilisant des outils qui automatisent certains des processus décrits par Don. Faites-moi savoir si vous en avez besoin; ils sont dans le complément "Data Table Tools" sur l'échange de fichiers.
Comme note latérale, l'étape 1 du processus de Don, vous pouvez le faire en sélectionnant toutes les lignes de la colonne, en cliquant avec le bouton droit et en sélectionnant "Remplacer manquant par la valeur précédente". (Notez que cette option de menu n'apparaît que lorsque des valeurs manquantes ou des chaînes vides sont présentes dans la colonne.)
Retour au script:
Le script ci-dessous suppose que la colonne 1 est nommée "col1", la colonne 2 est nommée "col2" et crée une colonne appelée "Combiné", alors changez-les selon vos préférences.
J'ai joint une table avec le script joint; essayez-le, je pense qu'il fera ce que vous voulez.
À votre santé,
Brady
Names Default To Here(1);
dt = :col1 << get data table();
r = (dt << get rows where(:col1 == "" ));
for(i=1, i<=nrow(r), i++, dt:col1[r[i]] = dt:col1[r[i]-1]);
dt << new column ("Combined", character);
r = 1;
while (r <= nrow(dt),
set = dt << get rows where(:col1 == dt:col1[r]);
dt: Combined[r] = concatitems((dt:col2 << get values)[set], " ");
r += nrow(set);
);
Re: Contenu conditionnel de cellule de concaténation de différentes lignesJ'apprécie beaucoup @brady_brady @DonMcCormack
Ouais, en utilisant le script, j'ai réussi à le faire facilement.
Plus d'efforts pour apprendre le JSL, l'espoir peut écrire quelque chose dans le futur par moi-même:)