動的データインポートからファイル名で行を自動的に更新する方法私はフォルダから単一のデータテーブルに複数のファイルをインポートするスクリプトに取り組んでいます。USP_IDという列を作成しました。この列に、各行にファイル名を表示します。データは正しくインポートされますが、最後のインポートされたExcelファイルの名前のみがこの列に表示されます。それに対して、各ファイル名はそれぞれのデータに対応する行に表示されるようにします。
私はそれをソートする手がかりがないが私が私の問題を引き起こしていると信じている行で私のスクリプトを以下にリストした。任意の提案は大歓迎です!
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" );
);
);どのように動的データインポートからファイル名で自動的に行を更新するには?こんにちはメラニー、
助けてくれてありがとう、私はあなたのお勧めを期待通りに動かすことができませんでしたが、私はそれらを連結する前にデータテーブルにSource列を割り当てることによってそうすることがわかりました:
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);
);どのように動的データインポートからファイル名で自動的に行を更新するには?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>
各値を設定は、列内のすべての値を定数に設定します。したがって、すべてのループで、その列のすべてのセルを現在のファイル名に設定します。ファイル名に連結されたばかりのテーブルから「新しい」セルだけを設定する必要があります。たぶんこんな感じ?
cc_dt << Where(cc_dt:USP_ID == "")を選択します。//前のセルがすべてファイル名の値を持つと仮定して、空のセルを選択する
selrows = cc_dt <<選択行を取得する(); //選択されている行番号を取得する
cc_dt:USP_ID [selrows] = filenow; //その列の行だけをファイル名に設定する
HTH、
メラニー