行取得 |
---|
テーブルから1行取得したい |
先頭から5行を取得したい |
先頭から xx % を取得したい |
数値の条件を満たす行を取得したい |
文字列の条件を満たす行を取得したい |
特定の行を取得したい |
キー列で値の重複を排除したい |
全列の組み合わせで重複行を排除したい |
列並び替 | 列並び替 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
列を並び替えたい(index) |
|
|||||||||||||||||||||||
列を並び替えたい(列名) |
|
|||||||||||||||||||||||
列を逆順に並び替えたい |
|
|||||||||||||||||||||||
ある列を左端と入れ替えたい(index) |
|
|||||||||||||||||||||||
ある列を右端と入れ替えたい(index) |
|
|||||||||||||||||||||||
ある列を左端と入れ替えたい(列名) |
|
|||||||||||||||||||||||
ある列を右端と入れ替えたい(列名) |
|
列置換 | 列置換 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ある列 を 他の列 と置き換えたい |
|
列名変更 | サンプル |
---|---|
全列の列名変更 | result("C1","C2","C3") = table; |
特定の列の列名変更 | result("C1","CC2","C3") = table("C1","C2","C3"); |
テーブル結合 | サンプル |
---|---|
テーブル結合(最大行に合わせて補完) | defRow = cbind(-1,""); // 補間用レコード defRow2 = cbind(-1,-1); // 補間用レコード if (nrow(table) < nrow(table2)) { table = rbind(table,defRow); } else if (nrow(table) > nrow(table2)) { table2 = rbind(table2,defRow2); } result = cbind(table,table2); |
テーブル結合(最小行に合わせて切詰) | if (nrow(table) < nrow(table2)) { table2 = sel(row={1:nrow(table)},table2); } else if (nrow(table) > nrow(table2)) { table = sel(row={1:nrow(table2)},table); } result = cbind(table,table2); |
テーブル結合(キーで結合) | key = 1; key2 = 1; result = merge(table, table2, "00", key, key2); |
テーブル結合(列別、下端追加) | key1 = 1; key2 = 1; defRow1(titles(table1)) = cbind(-1,"",""); // 補間用レコード defRow2(titles(table2)) = cbind(-1,""); // 補間用レコード defRow1_ = defRow1(sel(not row=key1,{1:ncol(defRow1)})); defRow2_ = defRow2(sel(not row=key2,{1:ncol(defRow2)})); table1_ = cbind(table1, rep(defRow2_,ncol(table1))); idxList2 = sel(not row=key2,{1:ncol(table2)}); table2_ = cbind(table2(key2),rep(defRow1_,ncol(table2)),table2(idxList2)); result = rbind(table1_, table2_); |
テーブル分割 | サンプル |
---|---|
行毎に、6:4 に前後に分ける | ratio = 0.6; nr = as.integer(nrow(table)*ratio); keycol = {1:nr}; result = sel(row=keycol, table); result2 = sel(not row=keycol, table); |
行毎に、6:4 にランダムに分ける | ratio = 0.6; ijudge = as.integer(nrow(table)*ratio); ctemp = shuffle({1:nrow(table)}); result = sel(ctemp(1) <= ijudge, table); result2 = sel(ctemp(1) > ijudge, table); |
キー列を基準に、6:4 に前後に分ける | ratio = 0.6; keyColName = "C1"; keyCol = remove_dup(table(keyColName), keyColName); nr = as.integer(nrow(keyCol) * ratio); keyColBefore = sel(row={1:nr}, keyCol); result = sel(belong(table(keyColName), keyColBefore), table); result2 = sel(not belong(table(keyColName), keyColBefore), table); |
キー列を基準に、6:4 にランダムに分ける | keyColName = "C1"; ratio = 0.6; c1uniq("C1") = remove_dup(table(keyColName), keyColName); c2rate("C2") = shuffle({1:nrow(c1uniq)}); tableJudge = cbind(c1uniq, c2rate); ijudge = as.integer(nrow(tableJudge)*ratio); mergeTable = merge(table, tableJudge, "00", keyColName, "C1"); ic=ncol(mergeTable); result = sel(mergeTable(ic) <= ijudge, table); result2 = sel(mergeTable(ic) > ijudge, table); |
テーブル差分 | サンプル |
---|---|
単一のキー列同士によるテーブル差分 | key1 = "C2"; key2 = "CC2"; result = sel(not belong(table1(key1), table2(key2)), table1); result2 = sel(not belong(table2(key2), table1(key1)), table2); |
全列をキーとしたテーブル差分 | keyList1 = titles(table1); keyList2 = titles(table2); uniqKey1 = paste(table1(keyList1),sep=","); uniqKey2 = paste(table2(keyList2),sep=","); result = sel(not belong(uniqKey1, uniqKey2), table1); result2 = sel(not belong(uniqKey2, uniqKey1), table2); |