J'ai un ensemble de données appelé valeur 2 qui a été saisi sous forme de caractère avec les unités à la fin. Certains d'entre eux sont saisis en ml/min et d'autres en ul/s, et j'aimerais séparer ceux qui sont en ul/s dans une nouvelle colonne entièrement. Quelle fonction dois-je utiliser pour sélectionner les lignes qui contiennent un certain sous-ensemble d'une chaîne (j'allais sélectionner celles qui contiennent "ul/s" pour les saisir dans une nouvelle colonne, puis les supprimer de la colonne valeur 2). Je pensais que la fonction "contenir" ferait ce que je veux mais elle ne semble pas fonctionner pour l'instant.

current data table () << Select where (contains (:Value 2, "ul/s"))
Ce serait un moyen de le faire en utilisant la fonction contain(). Une autre façon de procéder serait d'utiliser Cols...Utilities...Text to Columns pour séparer la colonne Valeur 2 en plusieurs colonnes.
Si vous souhaitez le scripter, vous pouvez faire ceci :
dt = data table( "your datatable name" );
dt << new column( "Value 3", Character );
for each row(
dt:"Value 3"n = Char( If( Contains( :"Value 2"n, "ul/s" ) != 0, :Value 2, "" ) );
dt:"Value 2"n = Char( If( Contains( :"Value 3"n, "ul/s" ) != 0, "", :Value 2 ) );
);
Remplacez simplement le nom de votre table dans la première ligne.
Cependant, si vous essayez de gérer des unités mixtes et souhaitez simplement qu'elles soient comparables, vous pouvez essayer de créer une nouvelle colonne avec une formule comme celle-ci :
Num( Regex( :Value 2, "[0-9]+" ) ) *
If( Contains( :Value 2, "ul/s" ) != 0, 60 / 1000, 1 )
Cela crée une colonne dans laquelle les données ul/s sont converties en ml/min en extrayant la valeur numérique (à l'aide de Regex) puis en appliquant un facteur de conversion en fonction de la chaîne dans la cellule. La colonne résultante est toute en ml/min