PAGE TOP

index
行取得

項目 サンプル
テーブルから1行取得したい
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
先頭から5行を取得したい
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
102s02
103s03
104s04
105s05
先頭から xx % を取得したい
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
数値の条件を満たす行を取得したい
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
104s04
文字列の条件を満たす行を取得したい
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
特定の行を取得したい
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
103s03
105s05
キー列で値の重複を排除したい
C1C2
110
110
220
220
221
330
332
332
432
440
   =>   
C1C2
110
220
330
432
全列の組み合わせで重複行を排除したい
C1C2
110
110
220
220
221
330
332
332
432
440
   =>   
C1C2
110
220
221
330
332
432
440

テーブルから1行取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
[VAPScript]
N = 4;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table = cbind(c1,c2);
//
result = sel(row=3,table);
[解説]
sel(row= , )関数で、rowに行番号を指定することで、行番号の一行分のデータを取得しています。


先頭から5行を取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
102s02
103s03
104s04
105s05
[VAPScript]
N = 10;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table = cbind(c1,c2);
//
nsel = 5;
result = sel(row={1:nsel},table);
[解説]
sel(row= , )関数で、row に数値列を指定することで、数値列の行データを取得します。
ここでは、1から N(=5)までの数値列({1:N})を渡しています。


先頭から xx % を取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
[VAPScript]
N = 10;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table=cbind(c1,c2);
//
ratio = 0.6;
nr = as.integer(nrow(table) * ratio);
result = sel(row={1:nr}, table);
[解説]
「先頭からxx%」を、「全行数×(xx) 行目まで」の取得と置き換えます。
全行数は nrow(テーブル名)関数で、整数への型変換のために as.integer() 関数を用います。 あとは sel(row= ,)関数で rowに数値列 {1:nr}を指定して、xx%までの行データを取得できます。


数値の条件を満たす行を取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
104s04
[VAPScript]
N = 4;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table = cbind(c1,c2);
//
key = 103;
result = sel(table("C1")>=key,table);
[解説]
sel()関数に 数値列の条件式を指定することで、条件を満たす行データを取得できます。
条件 table("C1") >= key では、tableテーブルのC1列に対し、 key 値以上を満たす C1列の値の行データを取得します。


文字列の条件を満たす行を取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
   =>   
C1C2
103s03
[VAPScript]
N = 4;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table = cbind(c1,c2);
//
key = "s03";
result = sel(table("C2")==key,table);
[解説]
sel()関数に 文字列の条件式を指定することで、条件を満たす行データを取得できます。
条件 table("C2") == key では、tableテーブルのC2列に対し、 key 値と同じ文字列を持つ C2列の値の行データを取得します。


特定の行を取得したい

[結果]
C1C2
101s01
102s02
103s03
104s04
105s05
106s06
107s07
108s08
109s09
110s10
   =>   
C1C2
101s01
103s03
105s05
[VAPScript]
N = 10;
c1("C1") = {101:100+N};
c2("C2") = format_str("s%02d", {1:N});
table = cbind(c1,c2);
//
keyList = {101,103,105};
result = sel(belong(table("C1"),keyList),table);
[別解; キーの展開]
keyList = {101,103,105};
result={};
for (key in keyList) {
  result=rbind(result, sel(table("C1")==key,table));
}
[解説]
指定したキーに対し、そのキーの値を持つ行データを取得します。
sel(belong(), )関数は、belongに指定したキーを持つデータを探し出す関数です。 複数キーも一括で指定できます。

別解は、キー列を個別に展開して取得する方法です。
キー列を for() 関数で展開し、rbindで取得した行データを結合しています。


キー列で値の重複を排除したい

[結果]
C1C2
110
110
220
220
221
330
332
332
432
440
   =>   
C1C2
110
220
330
432
[VAPScript]
c1("C1") = {1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };
c2("C2") = {10,10,20,20,21,30,32,32,32,40};
table = cbind(c1,c2);
//
result = remove_dup(table,"C1");
[解説]
指定列が一意となるように重複を取り除きます。
rempve_dup() 関数で重複を省けます。


全列の組み合わせで重複行を排除したい

[結果]
C1C2
110
110
220
220
221
330
332
332
432
440
   =>   
C1C2
110
220
221
330
332
432
440
[VAPScript]
c1("C1") = {1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };
c2("C2") = {10,10,20,20,21,30,32,32,32,40};
table = cbind(c1,c2);
//
result = remove_dup(table,titles(table));
[解説]
テーブルの全列に対して、重複を削除します。
rempve_dup() 関数の引数に全列を指定することで、全列で重複を省いた、全列をキーとしたテーブルを取得できます。