Définition de plusieurs lignes dans une seule colonne sur une seule valeurBonjour,
Question de noob...
J'ai une colonne avec un identifiant unique (UID) pour certains types d'objets, par exemple {'cats', 'dogs', 'birds'}. Chaque UID est associé à plusieurs lignes, que j'ai capturées dans un tableau associatif.
Exemple : aa = { 'cats' => [1, 2, 3], 'dogs' => [4, 5, 6], 'birds' => [7, 8, 9] }
Pour chaque UID, toutes les lignes associées, je dois définir une colonne différente (col2) sur une seule valeur.
Par exemple : pour l'UID "chats", les lignes 1, 2 et 3, dans la colonne 2, doivent être définies sur "aime faire la sieste".
- Je connais la fonction << Définir toutes les valeurs, mais cela copie une seule valeur pour toutes les lignes d'une colonne.
- Si j'utilise dt:col 2[ aa[ 'cats' ] ] = 'likes napping', une erreur de valeur L se produira, ce qui m'informe que j'ai besoin d'une matrice de valeurs égales au nombre de lignes, afin que chaque ligne puisse être attribuée cette valeur.
- Ou, je peux utiliser une boucle for imbriquée dans une boucle for pour attribuer des valeurs là où j'en ai besoin.
Tout cela semble maladroit cependant. Il doit y avoir un meilleur moyen.
Voici les 2 tableaux associatifs :
- { UID => [lignes] }
- { UID => valeur }

Automatisation et scriptAnalyse et modélisation de données de baseOrganisation du contenuAccès aux donnéesles fenêtresRe : Définir plusieurs lignes dans une seule colonne sur une seule valeurEn faisant ce post, j'ai oublié d'ajouter une autre possibilité. Remarque : cet ensemble de données contient de nombreuses lignes.
// This completely removes the need to store rows in an AA, but takes a decent amount of time
for( i = 1, N rows( dt ), i++,
row_UID = dt:UID[i];
dt:col2[i] = aa_value[row_UID];
);Re : Définir plusieurs lignes dans une seule colonne sur une seule valeurUtilisez l'indexation des tables de données comme celle-ci

Abonnement aux tables de données
Re : Définir plusieurs lignes dans une seule colonne sur une seule valeurJ'utiliserais les capacités de manipulation de table de JMP pour cette opération
Names Default To Here( 1 );
animals = {"cats", "dogs", "birds"};
dt = New Table( "lots of animals",
add rows( 100 ),
New Column( "UID",
character,
set each value( animals[Random Integer( 1, 3 )] )
)
);
// Build the attribute table
dtLookup = new table("Lookup",
add rows(3),
new column("UID", character,
values({"cats", "dogs", "birds"})
),
new column("col2", character,
values({"likes napping","likes frisbee","likes cracker"})
)
);
// Update the table to expand all values into matching rows
Data Table( "lots of animals" ) << Update(
With( Data Table( "Lookup" ) ),
Match Columns( :UID = :UID )
);

Re : Définir plusieurs lignes dans une seule colonne sur une seule valeurLa sous-bande de table de données est tellement cool !
pourquoi le tableau associatif?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myMatrix= dt<< getrowswhere(age==12);
dt[myMatrix,{age}]=999Re : Définir plusieurs lignes dans une seule colonne sur une seule valeurSeulement à cause de la question initiale, mais les tableaux associatifs sont cool aussi !
Re : Définir plusieurs lignes dans une seule colonne sur une seule valeur@Craige_Hales , il y a un fil quelque part sur ce site qui a cette astuce pour l'abonnement. Je devrais probablement le mettre en signet à cause de trucs comme celui-ci !Merci!
Re : Définir plusieurs lignes dans une seule colonne sur une seule valeur@Craige_Hales , voici un lien vers votre fil de discussion sur l'abonnement pour ceux qui veulent en savoir plus.
PS - ces astuces peuvent vous faire gagner beaucoup de temps ! Il vaut 100% la peine d'être lu !
https://community.jmp.com/t5/Uncharted/Data-table-subscripting/ba-p/21013