PAGE TOP

index
早見表

列並び替 列並び替
列を並び替えたい(index)
C1C2C3C4C5
1 C2 3 C4 C5
   =>   
C1C5C4C2C3
1 C5 C4 C2 3
列を並び替えたい(列名)
C1C2C3C4C5
1 C2 3 C4 C5
   =>   
C1C5C4C2C3
1 C5 C4 C2 3
列を逆順に並び替えたい
C1C2C3C4C5
1 C2 3 C4 C5
   =>   
C5C4C3C2C1
C5 C4 3 C2 1
ある列を左端と入れ替えたい(index)
C1C2C3C4C5
1C23C4C5
   =>   
C3C1C2C4C5
31C2C4C5
ある列を右端と入れ替えたい(index)
C1C2C3C4C5
1C23C4C5
   =>   
C1C2C4C5C3
1C2C4C53
ある列を左端と入れ替えたい(列名)
C1C2C3C4C5
1C23C4C5
   =>   
C3C1C2C4C5
31C2C4C5
ある列を右端と入れ替えたい(列名)
C1C2C3C4C5
1C23C4C5
   =>   
C1C2C4C5C3
1C2C4C53
列置換 列置換
ある列 を 他の列 と置き換えたい
C1C2C3C4C5
1C23C4C5
   =>   
C1C2C3C4C5
1C2333C4C5
テーブル作成 テーブル作成
テーブルを作りたい
C1C2C3C4C5
101C2a301C4aC5a
102C2b302C4bC5b
列名変更 サンプル
全列の列名変更
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);
テーブル転置 サンプル
テーブル転置
// 転置後、列名として用いる列(C{数字})を作成
newCol = paste("C", as.string({1:nrow(table)}));
// newCol を第一列に結合
table = cbind(newCol, table);
// 転置
table = transpose(table);
// 転置前の列名が第一列になる
// 最初の列を取り除く
result = table({2:ncol(table)});