<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di aprire una serie di file di testo da una cartella e concatenare i dati in un file, con il nome del file txt come una delle colonne.
Ho allegato il codice che apre tutti i file di testo in una cartella selezionata. Tuttavia, non sono in grado di creare la colonna con il nome del file.
anyane può aiutare nello script per l'inserimento di dati (valori) in una colonna di una tabella di dati.
grazie
gowri
Puoi farlo anche con questo script che è un'alterazione di
//Passa a JMP Scripting
//Da: Wendy Murphrey e Rosemary Lucas
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//Pagina 122, Soultion 5.16
Per incorporare il nome del file di origine.
Anche un thread qui
Ho anche incorporato alcune cose dalla risposta di MS. MS, non sono stato in grado di utilizzare il tuo script per finalizzare la concatenazione.
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" );
Questo dovrebbe funzionare (estratto modificato dal tuo script)
nome = Sinistra ( si [ 1 ] , Lunghezza ( si [ 1 ] ) - 4 ) ;
Aprire (
"C:jmp\" || si [ io ] ,
colonne ( Conto num = Carattere , . = Omettere ) ,
Impostazioni di importazione (
Fine della linea ( CRL , CR , LF ) ,
Fine del campo ( Virgola ) ,
Striscia citazioni ( 1 ) ,
Usa l'apostrofo come virgolette ( 0 ) ,
Scansiona l'intero file ( 1 ) ,
Etichette ( 0 ) ,
Inizio dei nomi delle colonne ( 1 ) ,
I dati iniziano ( 1 ) ,
Righe da leggere ( Tutto ) ,
Regola dell'anno ( "10-90" )
)
) << Nuova Colonna ( "fonte" , carattere , impostare ciascun valore ( nome ) ) ;
L'unico cambiamento è il posizionamento e il codice all'interno di New Column().
Ma puoi anche usare l'opzione "Crea colonna di origine" di Concatenate() invece di aggiungere una nuova colonna a ogni tabella.
Prova lo script qui sotto. un approccio alternativo a questo problema che consente anche alla funzionalità integrata di Concatenate() di gestire la colonna di origine.
il mio cammino = "C:\jmp" ;
si = File nella directory ( il mio cammino ) ;
//rimuove tutti i file non di testo da y
Per ( io = N articoli ( si ) , io > 0 , io --,
Se ( Finisce con ( si [ io ] , "TXT" ) ,
,
Rimuovere da ( si , io )
)
) ;
N = N articoli ( si ) ;
//Crea la lista y1 delle espressioni open()
y1 = {} ;
Per ( io = 1 , io <= N , io ++,
y1 [ io ] = Analizza (
Inserisci valutazione (
"Apri(miopercorso||\!"^y ^\!",colonne(Acct num = Carattere, . = Ometti ),
Impostazioni di importazione(
Fine riga (CRLF, CR, LF),
Fine del campo (virgola),
Striscia citazioni( 1 ),
Usa l'apostrofo come virgolette ( 0 ),
Scansiona l'intero file( 1 ),
Etichette( 0 ),
Nomi di colonna Inizio( 1 ),
Inizio dati( 1 ),
Righe da leggere ( tutte )
))"
)
)
) ;
// (Apri e) Concatena i file
Valutazione ( y1 [ 1 ] ) << Concatenare (
Elenco di valutazione ( y1 [ 2 :: N ] ) ,
Crea colonna di origine
) ;
//Chiude i sottofile
Per ( io = 1 , io <= N , io ++,
Vicino ( Tabella dati ( si [ io ] ) , nosave )
) ;