Copier les cellules sélectionnées d'une colonne et les coller dans les cellules sélectionnées d'une autre colonneBonjour, je suis débutant en JSL. J'ai besoin d'apprendre à déplacer un bloc de cellules dans une colonne vers un emplacement différent dans une autre colonne nouvellement créée.Dans ce cas, en haut de cette nouvelle colonne.
Plus précisément, je dois sélectionner un ensemble de cellules dans la colonne THK marquée comme PRE dans une colonne PRE/POST séparée et les coller au-dessus d'une nouvelle colonne marquée THK PRE. C'est un peu similaire à la fonction Split Column, mais je ne veux pas utiliser la fonction Split Column car je trouve qu'en raison d'un problème, les données apparaissent parfois brouillées dans la colonne nouvellement créée si les données de certaines cellules de la colonne THK sont manquantes.
À partir de quelques exemples sur les forums, j'ai assemblé le code ci-dessous, mais il ne colle aucune valeur dans la colonne THK PRE nouvellement créée.S'il vous plaît aidez-moi!Merci d'avance.
Voici ce dont j'ai besoin :
Tableau de données de départ
MERCI JE PRE/POST
9.5 POSTE
9.8 POSTE
10.1 POSTE
11.0 PRÉ
11.4 PRÉ
10.9 PRÉ
Voici à quoi j'ai besoin que la table de données ressemble après cette opération :
THK | PRÉ/POST | THK PRE
9.5 APRÈS 11.0
9.8 POSTE 11.4
10.1 POSTE 10.9
11.0 PRÉ
11.4 PRÉ
10.9 PRÉ
Le script ci-dessous ne colle aucune valeur dans la colonne nouvellement créée, la colonne reste vide
// Pick the source data table
dt=Open("Data Table");
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous");
Wait(1);
// Select PRE values from THK column
vals = Column(dt, "THK") << Get Rows Where(:Name("PRE/POST") == "PRE");
// Put these in the new column THK PRE
Column(dt, "THK PRE") << Set Values(vals)
S'il vous plaît aidez-moi! Merci d'avance.J'utilise JUMP 16.0.0
@jthi
Fusion et nettoyage des donnéesRe : Copier des cellules sélectionnées d'une colonne et les coller dans des cellules sélectionnées d'une autre colonneBonjour Txnelson, merci beaucoup pour la réponse rapide!Fonctionne comme un charme!Je suppose que j'étais assez proche, mais je ne pouvais pas tout à fait comprendre notre syntaxe.
Re : Copier des cellules sélectionnées d'une colonne et les coller dans des cellules sélectionnées d'une autre colonneVoici une refonte de votre script avec quelques annotations ajoutées qui gère ce que vous voulez
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous" );
Wait( 0 );
// Find the rows PRE values from THK column
// and copy those values from the found rows
// to the vals matrix
vals = :THK[dt << get rows Where( :Name( "PRE/POST" ) == "PRE" )];
// Put these in the new column THK PRE
dt:THK PRE << Set Values( vals );Re : Copier les cellules sélectionnées d'une colonne et les coller dans les cellules sélectionnées d'une autre colonneexiste-t-il un moyen de coller les données sélectionnées dans une nouvelle colonne à la même position de ligne ? ou définir les valeurs d'une nouvelle colonne en fonction de la sélection ? Quelque chose comme ça?

Re : Copier les cellules sélectionnées d'une colonne et les coller dans les cellules sélectionnées d'une autre colonneVoici quelques façons de faire ce que vous voulez.
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE1",
Numeric,
"Continuous",
formula( If( :"PRE/POST"n == "PRE", :THK, . ) )
);
dt << New Column( "THK PRE2", Numeric, "Continuous" );
For Each Row(
If( :"PRE/POST"n == "PRE",
:THK PRE2 = :THK,
:THK PRE2 = .
)
);
Si vous souhaitez que la valeur THK PRE soit 5 comme illustré dans votre deuxième exemple, changez simplement la valeur résultante de :THK à 5.
Re : Copier les cellules sélectionnées d'une colonne et les coller dans les cellules sélectionnées d'une autre colonneAppréciez la réponse. J'espérais qu'il y avait une fonction de script « coller » dont je n'étais pas au courant. On dirait que je devrai parcourir chaque ligne comme vous l'avez suggéré si la colonne contient déjà d'autres valeurs.
Re : Copier les cellules sélectionnées d'une colonne et les coller dans les cellules sélectionnées d'une autre colonneUn peu plus proche du copier/coller : vous pouvez obtenir et écrire par lots toutes les valeurs à la fois :
Inscription aux tables de données
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 100 ),
New Column( "input",
Set each Value( random uniform () )
),
New Column( "variant",
Character,
set each value({"A","B"}[random integer(1,2)])
)
);
dt << New Column( "out");
rows= Where(:variant == "A");
vals = dt[rows,"input"];
dt[rows,"out"]=vals;
Ceci est similaire à
dt:THK PRE << Set Values( vals );
La différence : via l'indexation des tables de données, vous pouvez spécifier précisément dans quelles lignes écrire.
Définir les valeurs commence à la ligne 1 et remplit autant de lignes qu'il y a de valeurs dans le tableau.