データ削減
Data-Reduction
削除
列の削除
名前またはインデックスで列を削除できます。
del col("Sample 6"); // ロングネームを使う
del col(G); // ショートネームを使う
del col(7); // 列インデックス(最初の列は1)を使う
NextCol = 7; // 変数を使う
del wcol(NextCol);
平均
行の統計ですべてのシートのデータを平均
以下のコードはXファンクションrowStatsを使用してワークブック内の全てのシートにある列を平均し、新しいブックに結果を出力します。2列以上持つワークシートを2つ以上用意したワークブックから開始します(それぞれで同じ列数)。
string ss$ = %H; // アクティブブック名を保存
int ncols = wks.ncols; // アクティブシートの列の数を保存
newbook s:=3; // 結果用のブック(シート数3)
// 各シートの名前付け:
range s1=1!;s1.name$ = Mean;
range s2=2!;s2.name$ = N;
range s3=3!;s3.name$ = SD;
loop(i,1,ncols)
{
rowstats [ss$](1:end)!wcol(i)
mean:=1!wcol(i)
n:=2!wcol(i)
sd:=3!wcol(i);
}
選択したシートのデータを平均
以下のコードは、XファンクションrowStatsを使って、選択されたすべてのシートの各列を平均し、結果を同じブックのMean, N, SDという3つのシートに出力します。2列以上持つ3つ以上のワークシート(列の数は同じ)があるワークブックを用意してコードを実行します。Ctrlキーを押しながらシート名をクリックして2つ以上のシートを選択します。
int ncols=wks.ncols;//アクティブシートの列数を保存
// 3,4,6のように選択されたシートを取得
string sel$=SelLayers()$;
if(exist([%H]Mean!,2)==0)
{
newsheet name:="Mean";
newsheet name:="N";
newsheet name:="SD";
}
type "selected sheets %(sel$)";
loop(i,1,ncols)
{
rowstats (%(sel$))!wcol(i) mean:=Mean!wcol(i) n:=N!wcol(i) sd:=SD!wcol(i);
}
page.active$=Mean;
Xを補間してすべてのシートのXYYデータを平均
以下のコードでは、Xファンクションaverageを使用してすべてのシートのXYYデータの平均を計算して
結果を新しいシートに出力します。ブック内のすべてのシートは、最初の列がXで、
全シートの列数と列名が共通であるなど、同じ形式のデータである必要があります。各シートは
X値の数は同じである必要はありません。
// データファイルの場所を指定
string path$ = system.path.program$ + "Samples\Import and Export\";
// ワイルドカードを使用してすべてのファイルを探す
findfiles ext:="S*-*-*.dat";
int numFiles = fname.GetNumTokens(CRLF);
// 新しいブックを開始
newbook;
// 全てのファイルでループしてブック内の新しいシートにインポート
for(int ifile = 1; ifile <= numFiles; ifile++)
{
string filepath$, file$;
// 次のファイル名を取得
filepath$=fname.gettoken(ifile,CRLF)$;
// I新しいシートを追加してインポート
impasc fname:=filepath$ options.ImpMode:= 4;
}
// すべてのシートで平均する
// シートの数を取得
int nlayers = page.nlayers;
// X取得
range rXIn = col(1);
// Y列の数を取得 - 全てのシートで共通
int ncols = wks.ncols - 1;
// 新しい出力シートを追加
newsheet name:="Average";
// 全てのデータ列でループして平均を計算
for(int icol = 1; icol<=ncols; icol++)
{
averagexy iy:=(1:$(nlayers))!(1,$(icol + 1)) method:=1 interp:=1 x:=col(1) y:=wcol(icol+1);
// 最初のシートのY列のロングネームと単位を取得して出力Y列に割り当て
range rYIn = 1!wcol(icol+1);
col($(icol+1))[L]$ = rYIn[L]$;
col($(icol+1))[U]$ = rYIn[U]$;
}
// X列のロングネームと単位を取得して出力X列に割り当て
col(1)[L]$ = rXIn[L]$;
col(1)[U]$ = rXIn[U]$;
|