Wie aktualisiere ich automatisch Zeilen mit Dateinamen aus einem dynamischen Datenimport?Ich arbeite an einem Skript, das mehrere Dateien aus einem Ordner in eine einzelne Datentabelle importiert. Ich habe eine Spalte mit der Liste USP_ID erstellt, in der ich möchte, dass der Dateiname in jeder Zeile angezeigt wird. Obwohl die Daten korrekt importiert werden, wird in dieser Spalte nur der Name der endgültig importierten Excel-Datei angezeigt, während ich möchte, dass jeder Dateiname in den Zeilen angezeigt wird, die seinen jeweiligen Daten entsprechen.
Ich habe mein Skript unten aufgelistet, mit der Zeile, von der ich glaube, dass sie mir Probleme bereitet, obwohl ich keine Ahnung habe, wie ich sie sortieren kann. Irgendwelche Vorschläge werden sehr geschätzt!
Names Default To Here( 1 );
Clear Symbols();
filelist = {};
filepath = Munger( Pick Directory( "Select the desired file directory" ), 1, "/", "" );
prefilelist = Files In Directory( filepath );
n2 = N Items( prefilelist );
For( i2 = 1, n2 >= i2, i2++,
file = (prefilelist[i2]);
If( Item( -1, prefilelist[i2], "." ) == "xlsm" | Item( -1, prefilelist[i2], "." ) == "xlsx",
Insert Into( filelist, file ),
Show( file )
);
);
nf = N Items( filelist );
cc_dt = New Table( "Combined data " );
cc_dt << New Column( "USP_ID", character, nominal );
For( iii = 1, iii <= nf, iii++,
filenow = (filelist[iii]);
fileopen = (filepath || filenow);
dt = Open( fileopen );
dt << Run Formulas();
cc_dt << Concatenate( Data Table( dt ), append to first table );
cc_dt:USP_ID << set each value( filenow ); // having issues with this I think?
Close( dt, nosave );
);
colList = cc_dt << get column names( character, string );
For( i = 1, i <= N Items( colList ), i++,
selRows = cc_dt << get rows where(
Column( cc_dt, colList[i] )[Row()] == "NaN" | Column( cc_dt, colList[i] )[Row()] == "0"
);
If( N Rows( selRows ) > 0,
Column( cc_dt, colList[i] )[selRows] = "0";
Column( cc_dt, colList[i] ) << data type( "numeric" ) << modeling type( "continuous" );
);
);Betreff: Wie aktualisiere ich automatisch Zeilen mit Dateinamen aus einem dynamischen Datenimport?Hallo Melanie,
Vielen Dank für die Hilfe, obwohl ich Ihre Empfehlung nicht so umsetzen konnte, wie ich es wollte, stellte ich fest, dass es durch Zuweisen der Quellspalten zu den Datentabellen vor dem Verketten ausreichen würde:
nf = N Items( filelist ); //number of items in the working list
cc_dt = New Table( "Combined fermenter data " );
cc_dt << New Column( "Source", character, nominal );
cc_dt << New Column( "USP_ID", character, formula( Substr( :Source, 1, 7 ) ) );
For( iii = 1, iii <= nf, iii++, //this starts the first loop
filenow = (filelist[iii]);
fileopen = (filepath || filenow);
dt = Open( fileopen );
dt << Run formulas();
dt << new column("Source", character, set initial data(filenow));
cc_dt << Concatenate( Data Table( dt ), append to first table );
close(dt, nosave);
);Betreff: Wie aktualisiere ich automatisch Zeilen mit Dateinamen aus einem dynamischen Datenimport?cc_dt<SPAN class="token punctuation">:</SPAN>USP_ID <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> set each value</SPAN><SPAN class="token punctuation">(</SPAN> filenow <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Jeden Wert setzen setzt alle Werte in einer Spalte auf eine Konstante. Bei jeder Schleife setzen Sie also jede Zelle in dieser Spalte auf den aktuellen Dateinamen. Sie müssen nur die "neuen" Zellen aus der Tabelle festlegen, die gerade mit dem Dateinamen verkettet wurde. Vielleicht so etwas?
cc_dt << Wo auswählen (cc_dt:USP_ID == "" ); // Leere Zellen auswählen, vorausgesetzt, vorherige Zellen haben alle ihre Dateinamenswerte
selrows = cc_dt << Ausgewählte Zeilen abrufen (); // Abrufen der ausgewählten Zeilennummern
cc_dt:USP_ID[selrows] = filenow; // setze nur diese Zeilen in dieser Spalte auf den Dateinamen
HTH,
Melanie