<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie d'ouvrir un ensemble de fichiers texte à partir d'un dossier et de concaténer les données dans un seul fichier, avec le nom du fichier txt comme l'une des colonnes.
J'ai joint un code qui ouvre tous les fichiers texte dans un dossier sélectionné. Cependant, je ne parviens pas à créer la colonne avec le nom de fichier.
Quelqu'un peut-il aider dans un script pour insérer des données (valeurs) dans une colonne d'une table de données.
merci
gowri
Vous pouvez également le faire avec ce script qui est une modification de
//Plongez dans les scripts JMP
//Par : Wendy Murphrey et Rosemary Lucas
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//Page 122, solution 5.16
Afin d'incorporer le nom du fichier source.
Et aussi un sujet ici
J'ai également incorporé certaines éléments de la réponse MS. MS, je n'ai pas pu utiliser votre script pour finaliser la concaténation.
mypath = "C:\jmp\";
Set Current Directory( mypath );
y = Files In Directory( mypath );
For( i = N Items( y ), i > 0, i--,
If( Ends With( y[i], "txt" ),
,
Remove From( y, i )
)
);
n = N Items( y );
For( i = 1, i <= N Items( y ), i++,
sname=left(y[i],length(y[i])-4);
/* If the file is the first in the list, open it. Otherwise, open the table, concatenate with the main table, and close the table just opened. */
If( i == 1,
mainDt = Open( mypath || y[i] );
mainDt << New Column ("source", character, set each value ( sname )),
dt = Open( mypath || y[i] ) ;
dt << New Column ("source", character, set each value ( sname ));
mainDt = mainDt << Concatenate( dt, Append to First Table );
Close( dt, NoSave );
Wait( 0 );
)
);
/* Give the final table a name. */
mainDt<< Set Name( "Concatenated Files" );
Cela devrait fonctionner (extrait édité de votre script)
nom = Gauche ( oui [ 1 ] , Longueur ( oui [ 1 ] ) - 4 ) ;
Ouvrir (
"C:jmp\" || oui [ je ] ,
Colonnes ( Numéro de compte = Personnage , . = Omettre ) ,
Importer les configurations (
Fin de ligne ( CRLF , CR , LF ) ,
Fin du champ ( Virgule ) ,
Citations de bande ( 1 ) ,
Utiliser l'apostrophe comme guillemet ( 0 ) ,
Numériser le fichier entier ( 1 ) ,
Étiquettes ( 0 ) ,
Début des noms de colonnes ( 1 ) ,
Les données démarrent ( 1 ) ,
Lignes à lire ( Tous ) ,
Règle de l'année ( "10-90" )
)
) << Nouvelle colonne ( "source" , personnage , définir chaque valeur ( nom ) ) ;
Le seul changement est le placement et le code dans New Column().
Mais vous pouvez également utiliser l'option "Créer une colonne source" de Concatenate() au lieu d'ajouter une nouvelle colonne à chaque table.
Essayez le script ci-dessous. une approche alternative à ce problème qui permet également à la fonctionnalité intégrée de Concatenate() de gérer la colonne source.
mon chemin = "C:\jmp" ;
oui = Fichiers dans le répertoire ( mon chemin ) ;
//supprime tous les fichiers non texte de y
Pour ( je = N articles ( oui ) , je > 0 , je --,
Si ( Se termine par ( oui [ je ] , "SMS" ) ,
,
Retirer ( oui , je )
)
) ;
n = N articles ( oui ) ;
//Faire la liste y1 des expressions open()
y1 = {} ;
Pour ( je = 1 , je <= n , je ++,
y1 [ je ] = Analyser (
Insertion d'évaluation (
"Ouvrir(monchemin||\!"^y ^\!",colonnes(numéro de compte = caractère, . = omettre ),
Importer les configurations(
Fin de ligne (CRLF, CR, LF),
Fin de champ (virgule),
Citations de bande( 1 ),
Utilisez l'apostrophe comme guillemet ( 0 ),
Numériser le fichier entier (1),
Etiquettes( 0 ),
Noms de colonnes Début( 1 ),
Début des données( 1 ),
Lignes à lire (toutes)
))"
)
)
) ;
// (Ouvrir et) Concaténer des fichiers
Évaluer ( y1 [ 1 ] ) << Enchaîner (
Liste d'évaluation ( y1 [ 2 :: n ] ) ,
Créer une colonne source
) ;
//Ferme les sous-fichiers
Pour ( je = 1 , je <= n , je ++,
Fermer ( Tableau de données ( oui [ je ] ) , nosave )
) ;