Comment aligner chaque champ ?J'ai un fichier txt. Je souhaite importer dans JMP pour analyse. Mais certaines colonnes ne sont pas alignées. Comment puis-je les aligner ?
Les délimités doivent être un espace, des espaces et une virgule. Mais "", " traitera l'espace comme du texte. Comment puis-je surmonter ce problème ?

dtTlog = Open(
D,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
Automatisation et scriptsles fenêtresRe : Comment aligner chaque champ ?Le problème que vous rencontrez est que vous utilisez des espaces et des virgules comme délimiteurs, et dans la colonne f vous avez des lignes qui ont à la fois une virgule et un délimiteur d'espace côte à côte. Un exemple est
4, 7
La colonne C1c lit dans le 4, elle voit alors le , comme délimiteur suivi d'un espace comme deuxième délimiteur donc comme elle n'a pas vu de valeur après le premier délimiteur et le deuxième délimiteur, elle applique une valeur manquante à la colonne f , et le 7 devient alors la valeur de la colonne C2c.
Vous trouverez ci-dessous un script qui lit toutes les données, supprime toutes les virgules, les enregistre dans une zone temporaire, puis les relit à l'aide de votre flux d'entrée.
names default to here(1);
d= "<YOUR path="" and="" file="" name="">";
dt = Open(
D ,
columns( New Column( "c000001", Character, "Nominal" ) ),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( CSV( 0 ) ),
Treat Leading Zeros as Character( 1 ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 0 ),
Column Names Start( 0 ),
First Named Column( 0 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
for each row(:c000001 = Trim(substitute(:c000001,","," ")));
dt << save ("$TEMP\interium file.txt");
dtTlog = Open(
"$TEMP\interium file.txt",
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Spaces, Space, CSV( 1 ), Comma ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 3 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
); </YOUR>

Re : Comment aligner chaque champ ?
D'accord, je vois. Je comprends votre suggestion. Mais cela me donne une alerte supérieure.
Re : Comment aligner chaque champ ? For Each( {col},
dt << Get Column Reference( dt << Get Column Names( Character ) ),
If( !Is Empty( col << Get Formula ),
Continue()
);
For Each Row( dt, col[] = Substitute( col[], ",", " ", <<IGNORECASE></IGNORECASE>I replace that line with these code. It's working now. Thanks.
Re : Comment aligner chaque champ ?J'ai eu une légère erreur dans mon code d'origine. Je suis revenu et je l'ai corrigé. Veuillez le copier et vérifier qu'il fonctionne. Le correctif que vous avez mis en place était bon, cependant, le code d'origine ne se lit pas séparément dans chaque colonne. Il lit toutes les données de chaque ligne comme une seule colonne, puis les traite du point de vue d'un tableau de données avec une seule colonne.
Re : Comment aligner chaque champ ?Alternativement, on peut utiliser Load Text File pour ouvrir le fichier sous forme de texte, supprimer les virgules via un remplacement et enfin ouvrir le texte dans une table de données.
messages originaux :
Erreur d'importation .csv / @Craige_Hales
Importation de fichier : spécifier NAN ? / @jthi
txtfile = Load Text File("$DOWNLOADS/log - question2.txt");
substituteinto(txtfile,","," ");
Open(
Char to Blob(txtfile),
Import Settings(
End Of Field( Spaces, Space ),
)
);
Re : Comment aligner chaque champ ?Text To Columns : gérer correctement les données manquantes
"correctement"?
pour votre tâche, le texte To Columns fonctionne à merveille :
dt = Open(
"$DOWNLOADS/log - question2.txt",
Import Settings(
End Of Field( Tab ),
Labels( 0 )
)
);
// split columns via Text to columns
dt << Text to Columns( columns( :c000001 ), Delimiters( " ", "," ));
dt << Delete Columns( :c000001);
// Move column names up
dt << Move up;