<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, eine Reihe von Textdateien aus einem Ordner zu öffnen und die Daten in einer Datei zusammenzufassen, wobei der Name der TXT-Datei eine der Spalten ist.
Ich habe Code angehängt, der alle Textdateien in einem ausgewählten Ordner öffnet. Allerdings kann ich die Spalte mit dem Dateinamen nicht erstellen.
Kann jemand im Skript zum Einfügen von Daten (Werten) in eine Spalte einer Datentabelle helfen?
Danke
gowri
Sie können dies auch mit diesem Skript tun, das eine Änderung von ist
//Springen Sie in JMP Scripting
//Von: Wendy Murphrey und Rosemary Lucas
// http://www.sas.com/apps/pubscat/bookdetails.jsp?catid=1&pc=61733
//Seite 122, Lösung 5.16
Um den Quelldateinamen einzubinden.
Auch hier ein Thread
Ich habe auch einige Dinge aus der MS-Antwort übernommen. MS, ich konnte Ihr Skript nicht verwenden, um die Verkettung abzuschließen.
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" );
Danke, das war sehr hilfreich
Das sollte funktionieren (bearbeiteter Auszug aus Ihrem Skript)
Name = Links ( j [ 1 ] , Länge ( j [ 1 ] ) - 4 ) ;
Offen (
„C:jmp\“ || j [ ich ] ,
Säulen ( Kontonr = Charakter , . = Auslassen ) ,
Importeinstellungen (
Ende der Linie ( CRLF , CR , LF ) ,
Ende des Feldes ( Komma ) ,
Strip-Zitate ( 1 ) ,
Verwenden Sie Apostroph als Anführungszeichen ( 0 ) ,
Ganze Datei scannen ( 1 ) ,
Etiketten ( 0 ) ,
Spaltennamen beginnen ( 1 ) ,
Datenstarts ( 1 ) ,
Zeilen zum Lesen ( Alle ) ,
Jahresregel ( „10-90“ )
)
) << Neue Spalte ( "Quelle" , Charakter , Legen Sie jeden Wert fest ( Name ) ) ;
Die einzige Änderung besteht in der Platzierung von und dem Code in New Column().
Sie können aber auch die Option „Quellspalte erstellen“ von Concatenate() verwenden, anstatt jeder Tabelle eine neue Spalte hinzuzufügen.
Probieren Sie das folgende Skript aus. Ein alternativer Ansatz für dieses Problem, bei dem auch die integrierte Funktionalität von Concatenate() die Quellspalte verarbeiten kann.
mein Weg = „C:\jmp“ ;
j = Dateien im Verzeichnis ( mein Weg ) ;
//Alle Nicht-Textdateien aus y entfernen
Für ( ich = N Artikel ( j ) , ich > 0 , ich --,
Wenn ( Endet mit ( j [ ich ] , "txt" ) ,
,
Entfernen von ( j , ich )
)
) ;
N = N Artikel ( j ) ;
//Liste y1 der open()-Ausdrücke erstellen
y1 = {} ;
Für ( ich = 1 , ich <= N , ich ++,
y1 [ ich ] = Analysieren (
Evaluierungseinlage (
„Open(mypath||\!“^y ^\!",columns(Acct num = Character, . = Omit ),
Importeinstellungen(
Zeilenende (CRLF, CR, LF),
Ende des Feldes (Komma),
Strip Quotes( 1 ),
Verwenden Sie Apostroph als Anführungszeichen (0),
Ganze Datei scannen (1),
Etiketten( 0 ),
Spaltennamen Start( 1 ),
Datenstarts( 1 ),
Zeilen zum Lesen (Alle)
))"
)
)
) ;
// Dateien (öffnen und) verketten
Bewertung ( y1 [ 1 ] ) << Verketten (
Bewertungsliste ( y1 [ 2 :: N ] ) ,
Quellspalte erstellen
) ;
//Unterdateien schließen
Für ( ich = 1 , ich <= N , ich ++,
Schließen ( Datentabelle ( j [ ich ] ) , nosave )
) ;